Yüksek kullanılabilirlik mimarisi-MySQL ana-bağımlı çoğaltma yapılandırması

çevre

İşletim sistemi: CentOS-6.6-x86_64-bin-DVD1.iso

MySQL sürümü: mysql-5.6.26.tar.gz

Birincil düğüm IP'si: 192.168.1.205 Ana bilgisayar adı: edu-mysql-01

Bağımlı düğüm IP'si: 192.168.1.206 Ana bilgisayar adı: edu-mysql-02

Ana bilgisayar yapılandırması: 4 çekirdekli CPU, 4G bellek

Bağımlı müfredat

"Yüksek Kullanılabilirlik Mimarisi-Bölüm 13-MySQL Kaynak Kodu Derlemesi ve Kurulumu (CentOS-6.6 + MySQL-5.6)"

MySQL master-slave replikasyonu resmi belgesi

MySQL master-slave replikasyonu

MySQL5.6'da master-slave replikasyonunu başlatmanın iki yolu vardır: log-based (binlog) ve GTID (global işlem tanımlayıcı).

Bu eğitimde esas olarak günlük tabanlı (binlog) çoğaltma hakkında konuşulur.

MySQL master-slave replikasyon ilkesi (A / B replikasyonu olarak da bilinir)

(1) Ana, veri değişikliklerini, günlük-bin yapılandırma dosyası tarafından belirtilen dosya olan ikili günlüğe kaydeder. Bu kayıtlara ikili günlük olayları denir;

(2) Slave, Master'daki ikili günlük olaylarını I / O iş parçacığı aracılığıyla okur ve röle günlüğüne (röle günlüğü) yazar;

(3) Slave, röle günlüğündeki olayları yeniden yapar, röle günlüğündeki olay bilgilerini yerel olarak tek tek yürütür ve kendi verilerine yansıyan değişikliği gerçekleştirmek için veri depolamayı yerel olarak tamamlar (veri yeniden oynatma ).

Master-slave konfigürasyonu için dikkat edilecek noktalar

(1) Ana ve ikincil sunucunun işletim sistemi sürümü ve bit sayısı tutarlıdır;

(2) Master ve Slave veritabanlarının sürümleri tutarlı olmalıdır;

(3) Master ve Slave veritabanlarındaki veriler tutarlı olmalıdır;

(4) Master, ikili günlüğü açar, Master ve Slave'in server_id'si LAN'da benzersiz olmalıdır;

Master-slave konfigürasyonunun kısa adımları

1. Master'da Yapılandırma

(1) Veritabanını kurun;

(2) Veritabanı yapılandırma dosyasını değiştirin, sunucu_kimliğini belirtin ve ikili günlüğü (günlük-bin) açın;

(3) Veritabanını başlatın, hangi günlüğün o anda olduğunu ve pozisyon numarasının ne olduğunu kontrol edin;

(4) Veritabanına giriş yapın ve kullanıcıyı verileri kopyalamak için yetkilendirin (IP adresi, ikincil IP adresidir, eğer bu iki yönlü bir ana-bağımlı ise, burada ayrıca yerel IP adresini yetkilendirmeniz gerekir, bu sırada kendi IP adresiniz ikincil IP adresidir);

(5) Veritabanını yedekleyin (kilitlemeyi ve kilidini açmayı unutmayın);

(6) Yedekleme verilerini Slave'e aktarın;

(7) Veritabanını başlatın;

Aşağıdaki adımlar, tek yönlü bir master-slave'i başarılı bir şekilde oluşturmak ve iki yönlü bir master-slave oluşturmak için gerekli adımlardır:

(1) Veritabanında oturum açın ve Master'ın adresini, kullanıcı, şifre ve diğer bilgilerini belirtin (bu adım yalnızca iki yönlü master-slave için gereklidir);

(2) Senkronizasyonu açın ve durumu kontrol edin;

2. Slave'de Yapılandırma

(1) Veritabanını kurun;

(2) Server_id'yi belirtmek için veritabanı yapılandırma dosyasını değiştirin (iki yönlü bir master-slave oluşturuyorsanız, ikili günlük günlük kutusunu da açmanız gerekir);

(3) Veritabanını başlatın ve yedeklemeyi geri yükleyin;

(4) Şu anda hangi günlüğün olduğunu ve pozisyon numarasının ne olduğunu kontrol edin (bu adım için tek yönlü master-slave gerekli değildir, iki yönlü master-slave ihtiyaçları);

(5) Master'ın adresini, kullanıcısını, şifresini ve diğer bilgileri belirtin;

(6) Senkronizasyonu açın ve durumu kontrol edin.

Tek yönlü master-slave ortamının oluşturulması (MySQL A / B replikasyonu olarak da bilinir)

1. Veritabanının aynı sürümü (mysql-5.6.26.tar.gz) hem Master (192.168.1.205) hem de Slave (192.168.1.206) üzerine kuruludur, bkz. "Yüksek Kullanılabilirlik Mimarisi-Bölüm 13-MySQL Kaynak Kodu" Derleyin ve kurun (CentOS6.6 + MySQL5.6) ".

Not: Her iki veritabanı sunucusunun selinux'u devre dışı bırakılmalıdır (selinux kalıcı olarak kapatılmıştır, lütfen / etc / selinux / config'i değiştirin ve SELINUX'u devre dışı olarak değiştirin)

2. Ana'nın yapılandırma dosyasını /etc/my.cnf'yi değiştirin

# vi /etc/my.cnf

## Aşağıdaki yapılandırma öğelerini ekleyin

## server_id değerini genellikle IP olarak ayarlayın

server_id = 205

## Filtreyi kopyala: yedeklenecek veritabanı, çıktı binlog

# binlog-do-db = roncoo

## Replikasyon filtresi: yedeklenmesi gerekmeyen veritabanlarının çıktısını alma (mysql kitaplıkları genellikle senkronize edilmez)

binlog-ignore-db = mysql

## İkili günlük işlevini açın, istediğiniz zaman alabilirsin, anlamı olması daha iyidir

log-bin = edu-mysql-bin

## Her oturum için ayrılan bellek, işlem sırasında ikili günlüğün önbelleğini depolamak için kullanılır

binlog_cache_size = 1 milyon

## Master-slave kopyalama biçimi (karma, ifade, satır, varsayılan biçim deyimdir)

binlog_format = mixed

## İkili günlüğün otomatik olarak silindiği / süresinin dolduğu gün sayısı. Varsayılan değer 0'dır, yani otomatik olarak silinmez.

expire_logs_days = 7

## İkincil tarafında çoğaltmanın kesintiye uğramasını önlemek için ana-bağımlı çoğaltmada karşılaşılan tüm hataları veya belirtilen hata türlerini atlayın.

## Örneğin: 1062 hatası, yinelenen birincil anahtarları ifade eder, 1032 hatası tutarsız ana-bağımlı veritabanı verilerinden kaynaklanır

slave_skip_errors = 1062

(Yukarıdaki parametrelerin daha ayrıntılı analizini bilmek istiyorsanız, doğrudan Baidu parametre adını yapabilirsiniz)

2.1 Kopyalama filtreleme, sunucudaki verilerin yalnızca bir kısmını kopyalamanıza izin verir.İki tür kopya filtrelemesi vardır:

(1) Ana birimdeki ikili günlükteki olayları filtreleyin;

(2) Slave üzerindeki röle günlüğündeki olayları filtreleyin. aşağıdaki gibi:

2.2 MySQL'in ikili günlük (binlog) için çoğaltma türü

(1) İfadeye dayalı çoğaltma: Master üzerinde yürütülen SQL ifadeleri, Slave üzerinde aynı ifadeleri yürütecektir. MySQL, varsayılan olarak daha verimli olan ifade tabanlı çoğaltma kullanır. Doğru bir şekilde kopyalamanın imkansız olduğu tespit edildiğinde, hat tabanlı kopyayı otomatik olarak seçecektir.

(2) Satır tabanlı kopyalama: Komutu Slave'de yürütmek yerine, değiştirilen içeriği Slave'e kopyalayın. MySQL5.0'dan beri desteklenmektedir.

(3) Karışık tip çoğaltma: Varsayılan olarak ifade tabanlı çoğaltma benimsenir.İfadeye dayalı çoğaltma doğru bir şekilde bulunamadığında, satır tabanlı çoğaltma kabul edilecektir.

3. Ana veritabanı hizmetini başlatın / yeniden başlatın, veritabanında oturum açın, bir veri senkronizasyonu kullanıcısı oluşturun ve ilgili izinleri verin

# service mysql yeniden başlat

MySQL kapatılıyor ..

MySQL başlatılıyor ..

# mysql -uroot -p

Şifre girin:

MySQL monitörüne hoş geldiniz. Komutlar; veya \ g ile biter.

MySQL bağlantı kimliğiniz 1

Sunucu sürümü: 5.6.26-log Kaynak dağıtımı

Telif hakkı (c) 2000, 2015, Oracle ve / veya bağlı şirketleri. Tüm hakları saklıdır.

Oracle, Oracle Corporation'ın tescilli ticari markasıdır ve / veya

bağlı kuruluşlar. Diğer isimler, ilgili kuruluşların ticari markaları olabilir.

sahipler.

Yardım için 'yardım' veya '\ h' yazın. Mevcut giriş ifadesini temizlemek için '\ c' yazın.

## Bir veri senkronizasyonu kullanıcısı oluşturun ve uygun izinleri verin

mysql > çoğaltma bağımlısı verin, çoğaltma istemcisi *. * to'repl'@'192.168.1.206 '' roncoo.123 'ile tanımlandı;

Sorgu tamam, 0 satır etkilendi (0,00 saniye)

## Yetkilendirme formu bilgilerini yenileyin

mysql > floş ayrıcalıkları;

Sorgu tamam, 0 satır etkilendi (0,00 saniye)

## Pozisyon numarasını kontrol edin ve pozisyon numarasını not edin (bu pozisyon numarası ve geçerli kayıt dosyası ikincil cihazda gereklidir)

mysql > ana durumu göster;

4. Bir roncoo kitaplığı ve tablosu oluşturun ve mevcut iş sistemi veritabanını simüle etmek için belirli miktarda veri yazın

yoksa veritabanı oluştur roncoo varsayılan karakter kümesi utf8 harmanla utf8_general_ci;

roncoo kullanın;

TABLO VARSA "edu_user";

TABLO OLUŞTUR "edu_user" (

`Id` int (11) NULL DEĞİL AUTO_INCREMENT,

`userName` varchar (255) NOT NULL DEFAULT '' COMMENT'Username ',

`pwd` varchar (255) BOŞ DEĞİL VARSAYILAN '' YORUM 'Parola',

BİRİNCİL ANAHTAR ("Kimlik")

) MOTOR = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8 COMMENT = 'Kullanıcı Bilgi Tablosu';

INSERT INTO "edu_user` VALUES (1, 'Wu Shuicheng', '123456'), (2, 'Qingfeng', '123456'), (3, 'Dragon Fruit', 'roncoo.com');

5. Master ve Slave verilerinin tutarlı olmasını sağlamak için, tutarlı ilk verileri elde etmek için ana yedekleme ve bağımlı geri yüklemeyi kullanırız

## Önce masayı geçici olarak kilitleyin

mysql > tabloları okuma kilidi ile yıkayın;

Sorgu tamam, 0 satır etkilendi (0,00 saniye)

## Burada tam veritabanı yedeklemesi uyguluyoruz. Pratikte, yalnızca belirli bir veritabanını senkronize edebilir veya yalnızca bir veritabanını yedekleyebiliriz.

# mysqldump -p3306 -uroot -p --add-drop-table roncoo > /tmp/edu-master-roncoo.sql;

Uyarı: Komut satırı arayüzünde bir parola kullanmak güvensiz olabilir.

Şifre girin:

# cd / tmp

# ll

toplam 644

-rw-r - r-- 1 kök kök 64426620 Aralık 04:10 edu-master-roncoo.sql

## Not: Gerçek üretim ortamında, çok yavaş olacağı için büyük miktarda veriyi (2G'den fazla veriyi) yedeklemek için mysqldump kullanmamanız önerilir. Şu anda yedekleme için XtraBackup kullanmanız önerilir.

## Masanın kilidini aç

mysql > tabloların kilidini aç;

Sorgu tamam, 0 satır etkilendi (0,00 saniye)

Slave konfigürasyonu sırasında veri kurtarma için Master'da yedeklenen verileri uzaktan Slave'e aktarın

# scp /tmp/edu-master-roncoo.sql root@192.168.1.206: / tmp /

root@192.168.1.206'nın şifresi:

edu-master-roncoo.sql 100% 629KB 629.2KB / s 00:00

#

6. Sonraki işleme Slave (192.168.1.206), yapılandırma dosyasının yalnızca bir öğe değiştirilmesi gerekir ve yapılandırmanın geri kalanı komutlarla çalıştırılır

# vi /etc/my.cnf

## Aşağıdaki yapılandırma öğelerini ekleyin

## server_id değerini genellikle IP olarak ayarlayın

server_id = 206

## Filtreyi kopyala: yedeklenecek veritabanı, çıktı binlog

# binlog-do-db = roncoo

## Replikasyon filtresi: yedeklenmesi gerekmeyen veritabanlarının çıktısını alma (mysql kitaplıkları genellikle senkronize edilmez)

binlog-ignore-db = mysql

## Slave, diğer slave'lerin efendisi olduğunda kullanmak için ikili günlüğü açın

log-bin = edu-mysql-slave1-bin

## Her oturum için ayrılan bellek, işlem sırasında ikili günlüğün önbelleğini depolamak için kullanılır

binlog_cache_size = 1 milyon

## Master-slave kopyalama biçimi (karma, ifade, satır, varsayılan biçim deyimdir)

binlog_format = mixed

## İkili günlüğün otomatik olarak silindiği / süresinin dolduğu gün sayısı. Varsayılan değer 0'dır, yani otomatik olarak silinmez.

expire_logs_days = 7

## İkincil tarafında çoğaltmanın kesintiye uğramasını önlemek için ana-bağımlı çoğaltmada karşılaşılan tüm hataları veya belirtilen hata türlerini atlayın.

## Örneğin: 1062 hatası, yinelenen birincil anahtarları ifade eder, 1032 hatası tutarsız ana-bağımlı veritabanı verilerinden kaynaklanır

slave_skip_errors = 1062

## relay_log geçiş günlüğünü yapılandırın

röle_log = edu-mysql-röle-bin

## log_slave_updates, slave'in replikasyon olaylarını kendi ikili günlüğüne yazması anlamına gelir

log_slave_updates = 1

## Verilerin değiştirilmesini önleyin (özel iş parçacıkları hariç)

read_only = 1

Slave, diğer Slave'lerin Master'ı ise, bin_log ayarlanmalıdır. Burada, ikili günlüğü açtık ve onu açıkça adlandırdık (varsayılan ad ana bilgisayar adıdır, ancak ana makine adı değiştirilirse sorunlar ortaya çıkacaktır).

röle_ günlüğü röle günlüğünü yapılandırır, log_slave_updates, bağımlı birimin çoğaltma olaylarını kendi ikili günlüğüne yazması anlamına gelir.

Log_slave_updates ayarlandığında, slave'in diğer slave'lerin efendisi olarak hareket etmesine izin verebilirsiniz. Bu noktada, slave, SQL iş parçacığı tarafından yürütülen olayları kendi ikili günlüğüne yazar ve ardından slave, bu olayları elde edip çalıştırabilir. Aşağıdaki şekilde gösterildiği gibi (replikasyon olaylarını diğer slave'lere gönderin):

7. Yedekleme verilerini kaydettikten ve geri yükledikten sonra MySQL hizmetini yeniden başlatın

# service mysql yeniden başlat

MySQL kapatılıyor ..

MySQL başlatılıyor ..

Slave'de aynı kitaplığı oluşturun:

yoksa veritabanı oluştur roncoo varsayılan karakter kümesi utf8 harmanla utf8_general_ci;

roncoo kullanın;

Verileri İçe Aktar

# mysql -uroot -p roncoo < /tmp/edu-master-roncoo.sql

Şifre girin:

#

8. Slave veritabanında oturum açın ve ilgili parametreleri ekleyin

(Master'ın IP'si, portu, senkronizasyon kullanıcısı, şifresi, pozisyon numarası, hangi log dosyasının okunacağı)

# mysql -uroot -p

Şifre girin:

MySQL monitörüne hoş geldiniz. Komutlar; veya \ g ile biter.

MySQL bağlantı kimliğiniz 3

Sunucu sürümü: 5.6.26-log Kaynak dağıtımı

Telif hakkı (c) 2000, 2015, Oracle ve / veya bağlı şirketleri. Tüm hakları saklıdır.

Oracle, Oracle Corporation'ın tescilli ticari markasıdır ve / veya

bağlı kuruluşlar. Diğer isimler, ilgili kuruluşların ticari markaları olabilir.

sahipler.

Yardım için 'yardım' veya '\ h' yazın. Mevcut giriş ifadesini temizlemek için '\ c' yazın.

mysql > master'ı master_host = '192.168.1.205', master_user = 'repl', master_password = 'roncoo.123', master_port = 3306, master_log_file = 'edu-mysql-bin.000001', master_log_pos = 1389, master_connect_retry = 30;

Sorgu TAMAM, 0 satır etkilendi, 2 uyarı (0,01 saniye)

Yukarıda yürütülen komutun açıklaması:

master_host = '192.168.1.205' ## Master'ın IP adresi

master_user = 'repl' ## Verileri senkronize etmek için kullanılan kullanıcı (Master'da yetkilendirilmiş kullanıcı)

master_password = 'roncoo.123' ## Senkronizasyon verileri kullanıcısı şifresi

master_port = 3306 ## Ana veritabanı hizmetinin bağlantı noktası

master_log_file = 'edu-mysql-bin.000001' ## Slave'in verileri okumaya ve çoğaltmaya başlayacağı günlük dosyasını belirtin (günlük dosyası adını görüntülemek için Ana cihazda ana durumu göster seçeneğini kullanabilirsiniz)

master_log_pos = 429 ## Okumaya hangi POZİSYON numarasından başlamak için

master_connect_retry = 30 ## Master-slave bağlantısını yeniden kurarken, bağlantı kurulamazsa, yeniden denemeden önceki aralığın ne kadar olduğu. Birim saniyedir, varsayılan ayar 60 saniyedir ve senkronizasyon gecikmesi ayar parametreleri.

## Ana-bağımlı senkronizasyon durumunu görüntüleyin

mysql > köle durumunu göster \ G;

Slave_IO_State'in boş olduğunu ve Slave_IO_Running ve Slave_SQL_Running'in Hayır olduğunu görebilirsiniz, bu da Slave'in çoğaltma işlemini başlatmadığını gösterir.

## Master-slave senkronizasyonunu etkinleştirin

mysql > köle başlat;

Sorgu tamam, 0 satır etkilendi (0,00 saniye)

## Master-slave senkronizasyon durumunu tekrar kontrol edin

mysql > köle durumunu göster \ G;

Esas olarak aşağıdaki iki parametreye bakın, eğer bu iki parametre Evet ise, bu, ana-bağımlı senkronizasyonunun normal olduğu anlamına gelir

Slave_IO_Running: Evet

Slave_SQL_Running: Evet

Ekran görüntüsündeki master-slave senkronizasyon durum bilgilerinden yapılandırdığımız master-slave senkronizasyonunun normal olduğunu görebiliriz.

Master ve slave üzerindeki iş parçacıklarının durumunu görüntüleyebilirsiniz. Master üzerinde, slave'in I / O iş parçacığı tarafından oluşturulan bağlantıyı görebilirsiniz:

Yönetici: mysql > işlem listesini göster \ G;

1. Satır, bağımlı G / Ç iş parçacığını işleyen bağlantıdır.

2.row, MySQL istemci bağlantı iş parçacığını işlemek içindir.

3. Satır, yerel komut satırını işleyen iş parçacığıdır.

Köle: mysql > işlem listesini göster \ G;

1. Satır, G / Ç iş parçacığının durumudur.

2. Satır, SQL iş parçacığının durumudur.

3. Satır, yerel komut satırını işleyen iş parçacığıdır.

9. Master-slave veri çoğaltma senkronizasyon testi

(1) Master'daki roncoo kitaplığındaki değiştirilen verilerin senkron testi;

mysql > INSERT INTO "edu_user` VALUES (4, 'Sync Test 1', '123456'), (5, 'Sync Test 2', '123456');

Master'ı ekledikten sonra, verilerin senkronize edilip edilmediğini kontrol etmek için Slave'de oturum açın.

(2) Master'da yeni bir ron kitaplığı oluşturun

mysql > yoksa veritabanı oluştur ron default charset utf8 harmanla utf8_general_ci;

Veritabanını Slave'de görüntüleyin

mysql > veritabanlarını göster;

Nihai test sonucu, Master'daki işlemlerin Slave ile başarıyla senkronize edilmesidir.

10. Test sırasında, senkronizasyon hatalarıyla karşılaşırsanız, Slave üzerindeki master-slave replikasyon ayarlarını sıfırlayabilirsiniz (isteğe bağlı işlem):

(1) mysql > köleyi sıfırla;

(2) mysql > master'ı master_host = '192.168.1.205' olarak değiştirin,

master_user = 'repl',

master_password = 'roncoo.123',

master_port = 3306,

master_log_file = 'edu-mysql-bin.00000x',

master_log_pos = xx,

master_connect_retry = 30;

(Şu anda master_log_file ve master_log_pos, show master status komutu ile Master'da görüntülenmelidir)

Not: Slave salt okunur kontrol gerçekleştirmiyorsa, verileri Slave'e manuel olarak eklemeyin, aksi takdirde veriler tutarsız olur, ana ve bağımlı birim bağlantısı kesilir ve yeniden yapılandırmanız gerekir.

11. Yukarıdakiler, aynı zamanda daha fazla kullanılan tek yönlü bir replikasyon master-slave'tir ve iki yönlü master-slave aslında hem Master hem de Slave'in günlük fonksiyonunu etkinleştirmesi ve ardından yetkili kullanıcıyı Master'da çalıştırmasıdır (burada yetkilendirilmiş bir slave sunucu olarak davranmaktır. , Yani, buradaki IP adresi Master'ın IP adresidir) ve ardından Master üzerinde değişiklik ana işlemini gerçekleştirin.

MySQL master-slave veri senkronizasyon gecikme sorununun ayarlanması

LAN tabanlı Master / Slave mekanizması, normal koşullar altında "gerçek zamanlı" yedekleme gereksinimlerini zaten karşılayabilir. Gecikme nispeten büyükse, aşağıdaki faktörleri kontrol edebilirsiniz:

(1) Ağ gecikmesi;

(2) Ana yük çok yüksek;

(3) Bağımlı yük çok yüksek;

Genel yaklaşım, okuma taleplerini paylaşmak için birden fazla Slave kullanmak ve ardından sadece yedekleme amacıyla tek bir Slave konfigüre etmektir Başka herhangi bir işlem gerçekleştirmeden, "gerçek zamanlı" gereksinimler göreceli olarak maksimize edilebilir.

Master-slave replikasyonunun gecikmesini azaltabilen iki parametre (talep üzerine konfigürasyon):

MySQL, çoğaltma iş parçacığının ana veritabanına yeniden bağlanması için 3 parametre belirleyebilir: --master-retry-count, --master-connect-retry, --slave-net-timeout. Bunların arasında, Master-connect-retry ve master-retry-sayımının, Change Master, ana / yedekleme çoğaltmasını oluşturduğunda belirtilmesi gerekir ve slave-net-timeout, MySQL çalışırken çevrimiçi olarak ayarlanabilen global bir değişkendir. Spesifik yeniden deneme stratejisi şudur: yedek veritabanı, köle-net-zaman aşımı saniyelerinden sonra ana veritabanından veri almadıysa, ilk yeniden denemeyi başlatacaktır. Daha sonra her ana bağlantı yeniden deneme saniyesinde, bekleme veritabanı ana veritabanına yeniden bağlanmayı deneyecektir. Ana yeniden deneme sayımı yeniden deneyene kadar yeniden denemeyi bırakmaz. Yeniden deneme işlemi sırasında ana kütüphane bağlanırsa, mevcut ana kütüphanenin iyi olduğunu düşünür ve tekrar slave-net-timeout saniye kadar bekler. Bağımlı net zaman aşımının varsayılan değeri 3600 saniyedir, ana bağlantı yeniden denemesinin varsayılan değeri 60 saniyedir ve ana yeniden deneme sayısının varsayılan değeri 86400 katıdır. Diğer bir deyişle, ana veritabanı bir saat boyunca herhangi bir veri değişikliği göndermezse, bekleme veritabanı ana veritabanına yeniden bağlanmaya çalışacaktır. Bu nedenle, simüle edilmiş senaryomuzda, bir saat sonra bekleme veritabanı ana veritabanına yeniden bağlanacak ve veri değişikliklerini senkronize etmeye devam edecek.

Bu durumda, ana kitaplığınız sık sık değişiyorsa, ana kitaplık Binlog dökümü iş parçacığının sonlandırılmasını ve en son güncellemeleri gönderememesini önlemek için köle-net-zaman aşımını daha küçük bir değere ayarlamayı düşünebilirsiniz. Tabii ki, slave-net-timeout'un çok küçük ayarlanması da bir sorundur.Bu, ana veri tabanı daha az değiştirilirse, bekleme veri tabanının ana veri tabanına sık sık yeniden bağlanmasına ve kaynak israfına neden olur.

slave-net-timeout = saniye

Parametre açıklaması: Slave, Ana veritabanından günlük verilerini okuyamadığında, bağlantıyı yeniden kurmak ve verileri almak için ne kadar bekleneceği, ünite saniyedir ve varsayılan ayar 3600 saniyedir.

MySQL Slave yaparken, sıklıkla birçok hatayla karşılaşırsınız.Senkronizasyona belirli nedenlere göre devam etmek için hatayı geçmeniz gerekir, ancak bazen bunun nedeni ağın kararsız olması veya senkronizasyonun anormal olmasına neden olmak için ağın kesintiye uğramasıdır. Çok sayıda bağımlı makine varsa, biri Slave'i durdurmak, slave'i başlatmak için bir giriş sunucusu sıkıcı ve tekrarlayan hale gelir. MySQL 5.1'den desteklenen çözüm yapılandırmaları:

master-connect-retry = saniye

Parametre açıklaması: Ana sunucu kapandığında veya bağlantı kesildiğinde, ikincil sunucu iş parçacığı ana sunucuya yeniden bağlanmaya çalışmadan önce uykuya geçecek saniye sayısı. Ana sunucunun .info dosyasındaki değer okunabiliyorsa, önce kullanılacaktır. Ayarlanmazsa, varsayılan değer 60'tır.

Genellikle yukarıdaki iki parametrenin yapılandırılması, ağ sorunlarının neden olduğu ana-bağımlı veri senkronizasyon gecikmesini azaltabilir.

Genel ağ sorunları için hatalar şunlardır:

Sunucudan paket okunurken hata oluştu: Sorgu sırasında MySQL sunucusuna bağlantı kesildi (server_errno = xxxx)

Bağımlı G / Ç iş parçacığı: Günlük etkinliği okunamadı, yeniden denemek için yeniden bağlanılıyor, "edu-mysql-bin.000256" konumunu 23456 günlüğe kaydet

IG Baolan canlı öğretim! Jin'in büyük hamlesi nasıl engellenir! RNG'yi öğrendiniz mi?
önceki
"Thunder Shazan" ı izleyin! Merhaba aile! Dinamik koltuklar ve üç taraflı surround yanan DC evren
Sonraki
Jaguar'ın yeni XE'si yeni 2.0T güçle donatılmıştır veya bu yıl içinde listelenecektir.
"The Four Heroes of Kung Fu: Brave the Underground" bugün yayınlandı
Yaşam tarzı değişiklikleri Lincoln MKZ H hibrit versiyonunu test ediyor
Anzhi Auto, karanlık gece + duman koşulları için ilk yerli AEB sistemi işlevini piyasaya sürdü (yol testi videosu ile)
Üniversiteye giriş sınavı için geri sayım, küçük öğrencilere bazı tavsiyeler vermeye gelen biri (çok komik okuduktan sonra)
En anormal antika oyun, oyuncuların% 90'ı 10 saniyeden az yaşıyor, Yüce Tanrı oyunu bir saat içinde temizliyor
Colin Amca gibi bir Kingsman gibi giyinmek ister misin? Bu dükkan sana yardım edecek
Volkswagen Metroway Discovery Edition 20 Haziran'da satışa sunulacak
Resmi duyuru! EDG koçu istifa etti Netizen: Bir yıllık azarlama ve duygusallıktan sonra, yeni koç o olacak mı?
Yufu Sanayi Geliştirme Bölgesi, Liangjiang Yeni Bölge: bugünün tecavüz çiçekleri, gelecekteki uluslararası yeni şehir!
Gelecekte, "Çinli öğrenciler üniversiteye giriş sınavına girecekler"! İlkokulda yakalayamazsanız, kesinlikle pişman olacaksınız!
Nofe istifa etmeyi teklif etti, EDG yeni bir koç mu buldu? Miller'ın Weibo'daki yayını her şeyi açıklıyor
To Top