./3 : mysql a des mécanismes de réplication, par contre, avec les mécanismes standards, c'est du master <=> slave, l'esclave étant alors dédié à faire du readonly : si tu fais un update ou quoi que ce soit dessus, tu prends le risque de casser ta réplication.
Pen^2 (./3) :
on doit pouvoir contrôler finement le moment de la synchro
tu peux le faire : en gros, ton master génère des binlogs... L'esclave est mis en pause. Et quand tu le souhaites, tu le démarres, et il synchronise. Par contre, même impératif qu'avant : tu ne dois faire aucun update sur l'esclave.
Après, tu peux faire des choses un peu fun : master <=> master. ça marche si on fait bien gaffe et si l'application en amont est bien gaulée (pas trivial).
en gros, tu fais comme un master slave, mais dans les deux sens. Tu as un mécanisme pour empêcher les update cycliques. Et pour les auto incrément, tu peux modifier le comportement par défaut, pour que chaque serveur génère un auto incrément différent : l'un en 2*n, l'autre en 2*n+1.
=> dans ton cas :
SRV1, SRV2
SRV1 == master, génère des binlogs. slave de SRV2, stoppé.
SRV2 == slave synchronisé, puis stoppé.
quand tu souhaites faire la bascule SRV1 => SRV2 :
SRV2 synchronise sur SRV1 (start slave; show slave status => dès que OK, stop slave

le traitement bascule sur SRV2, il bidouille... Et SRV2 génère du coup des binlogs.
quand traitement fini :
SRV1 : start slave; show master status => dès que fini, pouf pouf, tu peux rebasculer.
SRV2 : stop slave;
par contre :
* ne jamais purger les binlogs qui n'ont pas été consommés par le serveur distant
* chaque serveur doit générer des auto incrément différents.
* chaque serveur ne doit pas générer de binlog pour ce qu'il reçoit de son master
* ton appli doit être aware de tout ça

note : je raccourcis, mais en gros, l'idée devrait fonctionner, faut bien le gauler
