Doğrudan Slave üzerinde INSERT / UPDATE / DELETE ifadeleri uygulamadığınız sürece, Slave'iniz iyi durumda olmalıdır. Aksi takdirde, köle üzerinde mydb.mytable içine yeni bir satır eklerseniz ve çoğaltma yoluyla, köle daha sonra aynı PRIMARY KEY ile mydb.mytable için bir satır INSERT algılarsanız MySQL çoğaltma kırılabilir. Bu hata 1062 (Yinelenen Anahtar) üretir.
MySQL Çoğaltmasını bozmadan Slave'e yazmanın tek yolu şudur:
- Master db1, db2, db3 veritabanlarına sahiptir
- Köle, Master'dan db1, db2, db3 veritabanlarını çoğaltır
- Sen
CREATE DATABASE db4;
köle üzerinde koş
- Yalnızca Slave üzerinde db4'e INSERT / UPDATEs / DELETE
- Slave'de yalnızca db1, db2, db3'e INSERT / UPDATEs / DELETE yapmazsınız
Bir Master ve Slave'in herhangi bir araç indirmeden senkronize olmadığını tespit etmek için herhangi bir tablo seçin ve Master'da bir tabloya ve Slave'in aynı tablonun kopyasına karşı CHECKSUM TABLE'ı çalıştırın .
MİSAL
Bir tablonuz varsa mydb.mytable
, komutu ona karşı çalıştırın:
mysql> CHECKSUM TABLE mydb.mytable;
Değerler aynı şekilde geri gelmezse, bir şey senkronize değildir.
Bir grup tabloyu toplu olarak incelemek istiyorsanız, Percona'nın MAATKIT'ini aşağıya indirebilirsiniz. İki özel araca ihtiyacınız olacak (Percona, artık daha fazla tanıtılan MAATKIT'ten çatalladıkları Percona Toolkit'e de sahip)
veya
pt-table-checksum
Master ve Slave'deki tüm tablolara karşı bir CHECKSUM TABLOSU gerçekleştirir. Yalnızca belirli veritabanlarında tüm veritabanlarını yapacak şekilde yapılandırabilirsiniz.
pt-table-sync
herhangi bir masaya karşı bir Slave üzerinde çalıştırılabilir. --Print ve --sync-to-master seçeneklerini kullanarak, Master ile mükemmel şekilde eşleşmesi için Slave'de hangi SQL ifadelerinin çalıştırılması gerektiğini görebilirsiniz. Bu araç, bir İLK ANAHTAR veya BENZERSİZ ANAHTAR eksik olan tablo ile çalışmaz.
MAATKIT'i yıllardır kullandım. Hala yapıyorum. Percona Toolkit'i henüz denemedim, ancak MAATKIT ile aynı kalitede olması gerektiğinden eminim.