MySQL Master / Slave çoğaltmasında, Slave'e yazarsam ne olur?


17

Bir kaç soru

  • Slave girişi, Master üzerinde Slave'i etkileyebilecek tabloya bir ekleme / güncelleme / silme işlemi yapılana kadar kalır mı?

  • Değilse, Slave'in Master ile ileride senkronize olmasını nasıl sağlarım (Slave girişini silerek veya bu girişi Master'a manuel olarak kopyalayarak)?

  • En önemlisi, tabloların senkronize olmadığını nasıl belirleyebilirim?


... düzgün sorunuzu açıklayınız
Abdul Manaf

1
Bir master / slave ilişkisi master'dan slave'e tek yönlü bir senkronizasyon değil, tersi değil mi? Bu tür bir kurulumda köleye yazarsanız ne olacağını soruyorum.
kfmfe04

Yanıtlar:


14

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-checksumMaster 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-syncherhangi 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.


detaylı cevap için ty. Daha fazla sorum olduğunu düşündüm, ancak yanıtlarınızın tüm vakaları kapsadığını düşünüyorum (pt-table-sync gerçekten yararlı görünüyor).
kfmfe04
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.