Si j’ai une table (appelons-la orders
) sur l’un de mes serveurs, nommée par exemple local
. Et j'ai cette même table un autre de mes serveurs, nommé, par exemple, remote
.
Mon problème est, quel est le meilleur moyen de synchroniser ces deux tables?
Je voudrais une solution qui remplace un registre si le local est différent de celui distant. Et insérez le registre s'il n'existe pas sur la table locale.
J'avais essayé d'utiliser dump une commande dump similaire à celle-ci, mais je n'ai pas fonctionné comme prévu:
/usr/bin/mysqldump --defaults-file=~/my/conf.cnf --skip-opt --skip-add-locks --default-character-set=latin1 --disable-keys --no-create-db --no-create-info --dump-date --compress --quick --replace --where='date > DATE_SUB(NOW(), INTERVAL 1 DAY)' mydb orders >> /backup/myDump
Comment puis-je faire ceci? Comment pourrais-je faire un script pour faire cela?
pt-table-sync peut le faire: http://www.percona.com/doc/percona-toolkit/2.1/pt-table-sync.html
Voir aussi autre SO questions et réponses mentionnant pt-table-sync.
On peut dire que la "meilleure" méthode consiste à utiliser la réplication MySQL, documentée ici: http://dev.mysql.com/doc/refman/5.5/fr/replication.html
Je résous le problème similaire de la synchronisation constante de deux tables.
Parmi tous les scripts (dont la plupart sont anciens), j'ai trouvé cette application activement développée (prometteuse)
https://github.com/mrjgreen/db-sync
Je vais l'essayer et peut-être que plus tard, j'écrirai un exemple.