KÖLE
Köleleriniz Üstat değilse, kölelerin ikili kayıtlara hiç ihtiyacı yoktur. Bir Slave tarafından biriktirilen röle kayıt alanı miktarına bir sınır koyabilirsiniz. Röle günlüklerini 4G'de relay_log_space_limit
kısmak için her Slave'de /etc/my/.cnf dosyasına ekleyin
[mysqld]
relay_log_space_limit=4G
ve mysql'yi yeniden başlat
Bunu ayarlayamazsanız, en azından bunu yapan SHOW SLAVE STATUS\G
ve değerini Relay_Log_Space
(röle günlükleri tarafından tüketilen toplam bayt sayısı) kontrol eden bir tür uyarıya sahip olmalısınız .
USTA
Üstat'a gelince, expire_logs_days
1'e ayarlayabilirsiniz , ancak sizin için ciddi bir uyarı var ...
Çoğaltma bozulursa, düzeltmek için 1 gününüz vardır. Aksi takdirde, Master'daki bir ikili günlük dönebilir ve çoğaltmayı yeniden hizalamak için MASTER TO CHANGE TO komutunu çalıştıramazsınız. Ben bırakacaktı expire_logs_days
Master 3'te.
ÖNERİ # 1
Yapacak bir gecede toplu işleminiz varsa, belki de Toplu İşlemleri SET SQL_LOG_BIN=0;
Oturumun Başlangıcında Master'da çalıştırmalısınız . Bu elbette Köle'ye çoğaltılmayacak. Her iki Köleye Paralel Olarak Aynı Toplu Yükü gerçekleştirebilirsiniz.
ÖNERİ # 2
Master ikili günlük birikimini yönetmek için yapabileceğiniz bir diğer şey şudur.
SHOW SLAVE STATUS\G
Her iki Kölede de koş . Şuna bak Relay_Master_Log_File
. Bu, son komutu Slave'de yürütülen Master'daki ikili günlüğü temsil eder.
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.4.92.250
Master_User: replicant
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.009677
Read_Master_Log_Pos: 855227755
Relay_Log_File: relay-bin.000674
Relay_Log_Pos: 757296783
Relay_Master_Log_File: mysql-bin.009590
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 757296646
Relay_Log_Space: 94274010765
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 80561
1 row in set (0.00 sec)
Bu örnekte Relay_Master_Log_File mysql-bin.009590 şeklindedir. Bundan önceki tüm ikili günlükler Ana Veriden kaldırılabilir. Bunu Üstatta çalıştırabilirsiniz:
PURGE BINARY LOGS TO 'mysql-bin.009590';
Bu, eski günlükleri siler ve çoğaltmayı yine de dokunmaya bırakır.
UYARI
İkili Günlükler, tamamlanan tüm SQL işlemlerini bir SQL deyimi veya satır değişikliği olarak seri olarak derleyen (FIFO kuyruğu gibi) dosyalardır. Geçiş günlüğü, uzak bir sunucudan (diğer adıyla Master) ikili günlük girdilerini toplayan bir dosyadır.
MySQL Çoğaltmasında
- Master'ın ikili günlükleri etkin olmalıdır
- Slave röle günlüklerini derler
- Geçiş günlüğündeki tüm SQL işlendiğinde silinir
- Bir Slave'de, bir DB Sunucusunda birden fazla röle günlüğü olduğunda, çoğaltma işleminin geride kaldığını gösterebilir, çünkü IO iş parçacığı, SQL iş parçacığının geçiş günlüklerini işleyebileceğinden daha hızlı bir Master'dan SQL toplar.
- Relay_log_space_limit kullanmak, çoğaltmanın birikmesini ve bir diski doldurmasını engeller. Röle günlükleri kural # 3'e göre döner
- Bir DB Sunucusunun hem Ana hem de Bağımlı olması mümkündür. Bir Slave'in ikili günlükleri etkinleştirmesi gereken tek durum budur. Bu senaryoda, bir DB sunucusunda hem ikili günlükleri hem de geçiş günlükleri olacaktır.
Bir Slave'e yük devretme yaparsanız ve onu bir Master yapmak istiyorsanız
- hizmet mysql durdurma
log-bin=mysql-bin
Köle /etc/my.cnf dosyasına ekle
- hizmet mysql başlangıç
Diğer Kölelerin çoğalmasını yeni tanıtılan Üstada kurmanız ve Slave'deki verilerin yeni tanıtılan Üstat ile eşleştiğinden emin olmanız gerekir.
GÜNCELLEME 2012-08-13 17:47 EDT
MySQL Belgeleri açık relay-log
seçeneğine göre tanımlamanız gerekir. İşte nedeni:
MySQL'in sunucu seçeneklerini ayrıştırma biçimi nedeniyle, bu seçeneği belirtirseniz, bir değer sağlamanız gerekir; varsayılan taban adı yalnızca seçenek gerçekten belirtilmemişse kullanılır. --Relay-log seçeneğini bir değer belirtmeden kullanırsanız, beklenmeyen davranışlar ortaya çıkabilir; bu davranış kullanılan diğer seçeneklere, belirtildikleri sıraya ve komut satırında mı yoksa bir seçenek dosyasında mı belirtildiklerine bağlıdır. MySQL'in sunucu seçeneklerini nasıl ele aldığı hakkında daha fazla bilgi için bkz. Bölüm 4.2.3, “Program Seçeneklerini Belirleme”.