Çoğaltma, aynı veriyi taşıyan ikinci bir sunucuyu ayakta tutar; o sunucu aynı değişiklikleri birincisinden az sonra uygular. Üç şeye yarar ve sağlamadığı dördüncü bir şey için de düzenli olarak kurulur.

Neye yarar

  • Okuma kapasitesi - raporlar ve arama kopyaya, yazmalar ise ana sunucuya gider.
  • Yük bindirmeyen yedekler - yedeği kopyadan alın, canlı site hiçbir şey fark etmez.
  • Devretme - yükseltilmeye hazır ılık bir kopya; bu, bir yeniden kurulumu bir anahtar çevirmeye dönüştürür.

Ne değildir

Bir kopya, yedek değildir. DROP TABLE orders bir saniyeden kısa sürede çoğaltılır ve artık iki kopyada da o tablo yoktur. Yedekler hatalara karşı korur; kopyalar ölen bir makineye karşı. İkisine de ihtiyacınız var - bakınız bir güvenlik önlemi olarak yedekler.

Kimsenin hesaba katmadığı gecikme

Çoğaltma varsayılan olarak eşzamansızdır: ana sunucu beklemez. Bir yazmanın hemen ardından kopyadan yapılan bir okuma eski değeri döndürebilir - bir müşteri profilini kaydeder ve profil değişmemiş görünür.

mysql -e "SHOW REPLICA STATUS\G" | grep -E 'Seconds_Behind|Replica_(IO|SQL)_Running'

Bundan kaçınmanın kuralı: kopyadan yalnızca biraz eskimiş verinin kabul edilebildiği yerlerde okuyun. Kullanıcının az önce yazdığı her şey ana sunucudan okunur.

Kurulumu, ana hatlarıyla

  1. Ana sunucuda ikili kaydı açınlog_bin, benzersiz bir server_id ve gtid_mode = ON.
  2. Bir çoğaltma kullanıcısı oluşturun — yalnızca REPLICATION SLAVE yetkisiyle.
  3. Kopyayı tutarlı bir yedekten tohumlayınmysqldump --single-transaction --source-data=2
  4. Onu ana sunucuya yöneltip başlatın — sonra yetişene kadar durumunu izleyin.

Ondan sonra da izleyin

Durmuş bir kopya sessizdir. Okumalara, artık günler öncesine ait veriyle yanıt vermeyi sürdürür; bu da düşmüş olmaktan beterdir. Hem çalışma bayraklarına hem de gecikmeye uyarı koyun.