From: Rick James Date: January 27 2011 7:04pm Subject: Re: Circular replication: node failure List-Archive: http://lists.mysql.com/replication/2058 Message-Id: <4D41C1D8.8060505@yahoo-inc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit I think you have found out the hard way why circular replication with 3+ writable masters is a bad idea. On 1/27/11 9:33 AM, Wechsler, Steven wrote: > Hi, > > I've been reading up on circular replication and I think I have a decent > grasp of the concepts. However, what I haven't been able to figure out > is how to recover from a node failure without reloading all the other > nodes from an arbitrary master, since there seems to be no way to keep > binary logs in sync. > > Example 4 node circle: A->B->C->D->A. Let's assume B fails. > > Since all transactions in the binary logs are timestamped, is MySQL > smart enough not to re-run any transactions; that is, if, when I alter > the slave on C to read from the A (now that B is no longer available), I > set the binlog number to some earlier position (say 1 hour earlier), > will it skip everything up to the point where it lost the connection? > > The alternative would be to write a Perl script to read the binlogs on > A, and the relay logs on C, then determine the correct position in both > and alter the slave IO thread on C accordingly, but it seems like there > should already be something in place that can do that automatically. Is > there? > > Thanks, > > Steve > -- Rick James - MySQL Geek