> -----Original Message-----
> From: Bruce Dembecki [mailto:bruce@stripped]
> Sent: Tuesday, September 20, 2005 23:05
> To: Jeff
> Cc: mysql@stripped
> Subject: Re: Circular Replication
> On Sep 16, 2005, at 11:07 AM, Jeff wrote:
> > There shouldn't be a problem if:
> > server A is ver 4.0.x
> > server B is ver 4.1.x
> > should there?
> There will totally by a problem here... The 4.1 server will take the
> 4.0 feed without issue. The 4.1 server however puts all sorts of
> information into the binary log which isn't in the original query,
> like what sort of collation to use, and which character set it uses
> and so on... 4.0 doesn't understand such commands and lots of things
> break in this situation.
> As a side note we deploy servers in pairs, with circular
> We did three and four server circles, but it gets messy if
> replication stops somewhere, the data becomes unpredictably
> inconsistent (assuming all the servers in the circle are getting
> production updates). Now we do simple two way replication between a
> pair, and we hang a third server off the pair somewhere just
> reading... the third server we use for backups, data dumps, reports
> and other non production issues. Essentially it is something like A<-
> >B->C, where A and B have two way replication and C is used for
> backups/reports etc... anything that changes the data happens
> on A or B.
I assume you then need to start server B with "--Log_slave_updates"?
> We do some other black magic to manage the replication on C so it's
> perpetually behind the master servers by between 15 minutes and 2
> hours... that way if we have a stupid operator error or some other
> data corrupting event we can stop replication on the backup server
> before it executes and start from there rather than having to
> go back
> to yesterdays backup or something.
> Best Regards, Bruce
Thanks for the info. All my downstream servers are 4.1 and my masters
are all 4.0. They will all be brought up to the latest when I can
figure out a production schedule that will allow it.
So for now what I'll have is:
A <-> B -> C
Where A and B (4.0.16) are masters in a circular replication and C,D,E
(4.1.13) are backups and other read only slave servers .
The reason for needing the circular replication is we are moving our
production systems to another data center and I need to be able to
quickly switch the applications over to the new data center and then
back again if something goes south.
After that however I think I'll keep the two db servers at the new data
center in a circular replication for redundancy probably.
I am interested in how you go about doing a "delayed replication" to
protect against operator error. We've already fallen victim to that