Thanks very much Mitchell. This indeed seems to have been the secret sauce. At the end of the script, after a one-time-copy was complete, I had the script updating back to to 'source/source', based upon the unidirectional replication design. The script no longer does that, and I have a successful bidirectional sync (albeit untested at this point).

On 8/12/13 2:36 AM, Mitchell Perilstein wrote:
Paul, no one's answered this so I'll give it a try and if someone wants to correct me, please do.

Yes, when crisscrossing, each box should treat itself as master (source) and the other as a slave (target). The theory goes as follows. If you do a describe on one of your replicated tables, you should see three stored trigger procedures. Any changes to the table will fire one of those (see bucardo.schema). That trigger--running on the local box--will do a select on the remote box inquiring about those those rows. The local box will modify the loser's db (according to conflict_strategy) whether the loser be local or remote. So you might say that each box pushes changes to the other, if you were only doing new and unique inserts at least. The bucardos are mostly ignorant of each other, except for one little trick that lets the triggers ignore when bucardo is doing a db write instead of the user, to avoid a ping-pong situation.

So your configs should mirror each other where hostnames are concerned. If any hell is breaking lose, it might be because a hostname is mixed up.

Hope this helps.


On 08/08/2013 07:13 PM, Paul Theodoropoulos wrote:
I wasn't on the list back when the thread I'm quoting from was active, so I don't believe there's any way to continue that thread. That said, quoting from the thread:

Mitchell Perilstein wrote:

Again, not saying it's right, but it's roughly something like this.
Names changed, error checks not shown, repeated for a number of tables
and databases, etc..

      bucardo add database    source_xx host=tplocalvirt user=myuser
db=xx dbport=5432
      bucardo add database    --force target_xx host=mypeerhost
user=myuser db=xx dbport=5432
      bucardo add table       $ALLMYTABLES db=source_xx herd=xxherd
      bucardo add dbgroup     xxgroup source_xx:source target_xx:target
bucardo start --log-destination=syslog -no-exit-on-nosync
      bucardo add sync        xx_sync herd=xxherd
conflict_strategy=latest onetimecopy=1 dbs=xxgroup
      bucardo set syslog_facility=local6
      bucardo set mcp_dbproblem_sleep=0.5
      bucardo set isolation_level='read uncommitted'
      bucardo set statement_chunk_size=1000
      bucardo activate sync   xx_sync

I'm attempting to set up a bidirectional/criss-cross multimaster setup, and I'm failing rather spectacularly. One thing that my script does is - after all the syncs are set up - and the one-time-copy is ostensibly finished (still working on eliminating 'ostensibly') - I then modify the dbgroups to have both sides be 'source' - which is my understanding of what makes the setup master-master.

But when doing a criss-cross multimaster - do you retain the 'source target' designation? So both really *are* masters, but they treat the other as a slave? Every time I try and fire up the remote server's bucardo with source/source, all hell breaks loose, and the syncs go "Bad".



_______________________________________________
Bucardo-general mailing list
[email protected]
https://mail.endcrypt.com/mailman/listinfo/bucardo-general


Confidentiality Notice: This e-mail (including any attachments) is intended only for the recipients named above. It may contain confidential or privileged information and should not be read, copied or otherwise used by any other person. If you are not a named recipient, please notify the sender of that fact and delete the e-mail from your system.

--
Paul Theodoropoulos
www.anastrophe.com

_______________________________________________
Bucardo-general mailing list
[email protected]
https://mail.endcrypt.com/mailman/listinfo/bucardo-general

Reply via email to