Jigal van Hemert wrote:
> Stefan Kuhn wrote:
>> Am Thursday 27 October 2005 12:56 schrieb Raphaël 'SurcouF' Bordet:
>>> Le vendredi 16 septembre 2005 à 18:14 +0200, Stefan Kuhn a
> écrit :
>>>> I'm using it with four machines (geographically separate) and it works
>>>> fine. Stefan
>>> And can writes on each server in simultaneous time ?
>> I don't understand the question. Replication is pretty fast, but is
>> not guaranteed to happen in a certain time (not real-time).
> I think Raphaël wants to know if a user can use any server in the circle
> to update or insert records and that the changes will be replicated to
> all other servers.
> In another thread he stated that it was for maintaining student
> information on various remote locations (a student can login into the
> system on any of the locations).
> What happens if a record is updated on two servers and the changes are
> forwarded to the other servers in the circle? I dont' think that this
> would occur often with student information, but both the student and the
> administration department might update a record "simultaniously" (in
> comparison to the speed of replication with several remote locations).
> Regards, Jigal.
Any time you are running circular replication, it is possible for a
situation to arise where two servers receive "conflicting" updates at
nearly the same time; this can cause replication to stop on both servers
at the point where they read the other server's conflicting update from
their master's binary log.
For example, imagine 4 servers, A->B->C->D->A, and imagine that A and C
both receive an insert statement containing the same unique key.
Replication would stop when A reads C's insert from D's binary log, and
when C reads A's insert from B's binary log. When this type of conflict
happens, it can be difficult or impossible to restore data integrity
between all servers. Another example, imagine that A had received an
update like "SET $val = $val + 5" while C had received "SET $val = $val
* 2". These would not conflict - in the sense that replication would
continue uninterrupted - but data integrity would be lost.
In short, any time you are running circular replication, you have to
ensure that updates are processed in the same order on all servers, or
know that the order is irrelevant to your data integrity.