Hello,


I have been testing the differences between asynchronous and synchronous hot 
standby streaming replication on PostgreSQL 9.2.4. There is some push towards 
synchronous replication, but I am finding some serious problems, and wonder how 
other people deal with them.
Action:The Slave is unreachable (postgres is stopped, or machine is turned off)
Result: Transactions stay open, and add up until connection is allowed between 
Master and Slave again.
My guess:Create a script that detects when transactions are being opened, but 
not committed on slave. Alter postgresql.conf to comment out 
synchronous_standby_names and pg_ctl reload. This should boot the server back 
to asynchronous, more or less.
Caveats:I haven't tested this yet, and I'm not sure what would happen to the 
transactions that started while synchronous replication was active. Any guesses?
The whole idea of my solution was to have no single point of failure. This 
seems to create two exclusive points of failure, each needing a completely 
separate reaction. My original proposal was asynchronous replication, with 
xlogs being stored on shared storage, and DRBD replication to prevent it from 
being a single point of failure. I have never seen it go over 15kbs behind in 
my setup, which still results in a very speedy failover. Is it just me, or is 
that seeming better than just synchronous replication? 
Another caveat I found is that setting up slaves becomes more complicated. You 
have to set up the Master in asynchronous style, and then switch it to 
synchronous only when the timing is right. Otherwise the transactions will sit 
there until everything is ready.
Sorry for the onslaught of questions, I don't expect all of them satisfied. 
Please share any resolutions to these issues which you guys have discovered.
Regards,
Colin                                     

Reply via email to