GÖRÜNÜM 1: Çoğaltma
Ben öyle düşünmüyorum
replicate-wild-do-table = db_backup.%
replicate-rewrite-db = db->db_backup
birbirine ait.
Diğer insanlar da bunu merak etti
Sorun, sipariş çoğaltma kurallarının işlenmesinden kaynaklanıyor. Çoğaltma Kuralları ile ilgili MySQL Belgelerine göre :
Herhangi bir --replicate-rewrite-db seçeneği belirtilmişse, --replicate- * filtreleme kuralları test edilmeden önce uygulanır.
Replicate-rewrite-db ile ilgili MySQL Belgeleri bile şöyle diyor:
Veritabanı adı çevirisi --replicate- * kuralları test edilmeden önce yapılır.
Yeniden replicate-wild-do-table
yazma işleminden sonra uygulanır. Bu siparişin bir şekilde zaten verileri olan bir tabloya bir INSERT koyması şaşırtıcı değildir.
Muhtemelen veriler oraya nasıl geldi?
GÖRÜNÜM 2: mysqldump
Bunu yapmak mysqldump --single-transaction
, verilerin zaman içindeki dökümlerini belirlemenin en iyi yolu gibi görünmektedir. Ne yazık ki, mysqldump --single-transaction
Aşil Topuğu var ALTER TABLE
. Bir tablo, mysqldump'ın dökümü yapmaya çalıştığı işlemin bütünlüğünü bozabilecek ALTER TABLE
bir DROP TABLE
ve gibi komutlara maruz kalırsa CREATE TABLE
. aynı zamanda yıkıcı da olabilir.
Bununla ilgili daha fazla bilgiyi MySQL Performans Blogunun En iyi saklanan MySQLDump Sırrı'nda bulabilirsiniz . Aslında bu noktayı mysqldump'ın işleminin bütünlüğünü bozabilecek 12 komutu açıklayan geçmiş bir soruda ele aldım: MySQL backup InnoDB
UYARI
SONSÖZ
Yönlerden biri veya her ikisi de, yeniden yazma kuralları veya geçersiz kılınmış mysqldump'ın izolasyonu nedeniyle var olmaması gereken mysqldump sırasında bir satır kaymasına izin vermiş olabilir.
ÖNERİLER
Köle işleyecek tüm INSERT'leri görmek ve bu satırların Köle üzerinde zaten var olup olmadığını görmek için mysqldump başından beri tüm röle günlükleri bir mysqlbinlog dökümü yapmak istiyorum. Eğer yaparlarsa, muhtemelen iki şey yapabilirsiniz:
1: Yinelenen Anahtar hatalarının tümünü atla
Bunu Köle üzerindeki my.cnf dosyasına eklemeniz yeterli
[mysqld]
slave-skip-errors=1062
skip-slave-start
ve mysql'yi yeniden başlatın. O zaman koşSTART SLAVE;
tüm yinelenen anahtar hataları atlanır. Ne zaman Seconds_Behind_Master
0'a alır, bu satırları ve yeniden başlatma mysql çıkarın.
2: Percona araçlarını indirin
İhtiyacınız olan araçlar
Slave'deki farklılıkları bulmak için bunları kullanın ve ardından düzeltin