----- Original Message -----
> From: "Rick James" <rjames@stripped>
>
> The potential flaw in semi-sync is that it acks once the data gets to
> the relay log; it does not wait for the write to be applied to the
> table. Granted, it would take two serious crashes to cause loss of a
> write.
Correct, thank you :-)
It amazes me how many people run replication, but how little is actually understood about
it :-)
MySQL's semi-synchronous feature is not that a quorum of slaves confirms the update (as
Cassandra does, like Marcus points out); it is semi-synchronous because the slave must
acknowledge that it has _received_ the update (ie, written to the relay log), whereas a
fully synchronous replication requires that the slave acknowledges that it has _applied_
the update.
When the master writes statements to the binary log, most non-deterministic expressions
(autoincrement, now(), ...) get replaced by the actual values that were applied; thus
ensuring that the slave does indeed apply exactly the same data. Not *all* of those get
translated, though - a typical example being "insert as select" where the select has no
explicit ordering - and those cases, if you have them, can be accomodated by using
row-based replication instead of statement-based. Look at the documentation before making
a decision :-)
--
Bier met grenadyn
Is als mosterd by den wyn
Sy die't drinkt, is eene kwezel
Hy die't drinkt, is ras een ezel