Hi Melvin,

On Fri, Aug 12, 2016 at 9:36 AM, Melvin Davidson <melvin6...@gmail.com>
wrote:

>
>
> On Fri, Aug 12, 2016 at 9:09 AM, Ioana Danes <ioanada...@gmail.com> wrote:
>
>> Hello Everyone,
>>
>> I have new information on this case.  I also open a post for Bucardo
>> because I am still not sure what triggers this problem.
>>
>> The problem happened again on the same table but on another field. Few
>> days ago I started a fourth database called drdb that is a PITR slave from
>> db3.
>>
>> DB1, DB2, DRDB:
>>
>> -[ RECORD 1 ]-------+--------------------------
>> gameplayid           | 324455566
>> systemuserid        | 515151
>> gameid                 | 41
>> transactionid         | 666556533
>> drawid                  | *318220*
>> ....
>>
>> DB3:
>> -[ RECORD 1 ]-------+--------------------------
>> gameplayid           | 32445556
>> systemuserid        | 515151
>> gameid                 | 41
>> transactionid         | 666556533
>> drawid                  | *318216*
>>
>>
>>
>> Here are the facts I know:
>>
>> August 10 @ 11:10
>>     - The record was created on db1 and replicated to db2 and db3
>> August 11 @ 2:30
>>     - db1, db2 and db3 are in sync (I have a script that compares the
>> data for all 3 dbs every night @ 2:30 am)
>> August 12 @ 2:30
>>     - db3 is out of sync because of this field (drawid)
>>     - drdb (which is PITRed from db3) is in sync with db1 and db2?????
>>
>>
>> Because drdb (PITR slave from db3) is in sync with db1 and db2 and
>> because the base backup was taken before the record in case was created, I
>> believe that the xlogs are fine and I have a data kind of corruption on db3
>> on the data file for that table that happened after August 11 @ 2:30
>> (because the compare script found the dbs in sync)...
>>
>> Also the index is correct on db3 as the record in case (with drawid =
>> *318216*) is retrieved if I filter by drawid = *318220*
>>
>> Any help is greatly appreciated,
>>
>> Thank you
>>
>>
>>
> Just out of curiosity, have you tried to REINDEX any of the indexes that
> might be involved on db3?
> Even though PostgreSQL considers them valid, it's possible that their
> pointers could be incorrect.
>
> Additionally, I would compare the EXPLAIN query on all 3 db's and see if
> there is any difference between the three.
>


The (drawid) index is correct:

There are too many records for that draw so I will create a temp table with
all the records for that draw and then retrieve the faulty one:

# create temporary table tmp_test as select * from abrazo.matchgameplay
where drawid = *318220 *order by datemodified;
SELECT 16611

# select * from tmp_test where drawid = *318216*; -- this query should
return nothing
-[ RECORD 1 ]-------+--------------------------
gameplayid           | 159329792
systemuserid        | 12797
gameid                 | 4
transactionid         | 75006684
drawid                  | *318216*

# explain select * from abrazo.matchgameplay where drawid = *318220 *order
by datemodified;
                                              QUERY PLAN
------------------------------------------------------------------------------------------------------
 Sort  (cost=1039.41..1058.65 rows=7696 width=103)
   Sort Key: datemodified
   ->  Index Scan using ix_matchgame_drawid on matchgameplay
(cost=0.44..542.64 rows=7696 width=103)
         Index Cond: (drawid = 318220)
(4 rows)


I will probably end up rebuilding the table from the other good dbs...

The only problem I have is that the values I see in these cases don't look
like corruption to be, they are valid information (for example this is an
id of another draw in the same period from another game... )

Thanks,
ioana


> --
> *Melvin Davidson*
> I reserve the right to fantasize.  Whether or not you
> wish to share my fantasy is entirely up to you.
>

Reply via email to