Saya punya pertanyaan tentang menghapus log biner di lingkungan replikasi:
Kami memiliki lingkungan dengan 1 master dan 2 budak (menjalankan mysql 5.5). Terkadang, kami mengalami masalah ruang selama waktu pemrosesan yang berat, di mana direktori log bin menjadi penuh. Log kedaluwarsa setiap 3 hari. Saya bertanya-tanya, apakah ada alasan mengapa log harus disimpan selama 3 hari di semua kotak - master dan kedua budak? Apakah masuk akal untuk, misalnya, menyimpan log selama 3 hari pada master, tetapi untuk 1 hari pada slave? Apa cara terbaik untuk melakukannya?
Terima kasih!
Jawaban:
BUDAK
Jika Budak Anda bukan Master, maka Budak tidak perlu log biner sama sekali. Anda dapat membatasi jumlah ruang log relai yang diakumulasikan oleh seorang Budak. Untuk
relay_log_space_limit
membatasi log relai pada 4G, tambahkan ke /etc/my/.cnf di setiap Slavedan mulai kembali mysql
Jika Anda tidak dapat mengatur ini, setidaknya Anda harus memiliki semacam peringatan yang melakukan
SHOW SLAVE STATUS\G
dan memeriksa nilaiRelay_Log_Space
(total byte yang dikonsumsi oleh log relay).MENGUASAI
Adapun Master, Anda bisa mengatur
expire_logs_days
ke 1, tetapi ada peringatan keras yang saya miliki untuk Anda ...Jika replikasi rusak, Anda punya waktu 1 hari untuk memperbaikinya. Jika tidak, log biner pada Master dapat berputar dan Anda tidak dapat menjalankan perintah PERUBAHAN MASTER KE untuk meluruskan replikasi. Saya akan berangkat
expire_logs_days
jam 3 di Master.SARAN # 1
Jika Anda memiliki pemrosesan massal semalam untuk dilakukan, mungkin harus menjalankan proses massal pada pada Master dengan
SET SQL_LOG_BIN=0;
di Awal Sesi. Ini, tentu saja, tidak akan mereplikasi ke Budak. Anda dapat melakukan Beban Massal yang Sama secara Paralel dengan kedua Budak.SARAN # 2
Hal lain yang dapat Anda lakukan untuk mengelola akumulasi log biner Master adalah ini.
Jalankan
SHOW SLAVE STATUS\G
di kedua Budak. LihatlahRelay_Master_Log_File
. Itu mewakili log biner pada Master yang perintah terakhirnya dijalankan pada Slave.Dalam contoh ini, Relay_Master_Log_File adalah mysql-bin.009590. Semua log biner sebelum ini dapat dihapus dari Master. Anda bisa menjalankan ini pada Master:
Ini akan menghapus log lama dan tetap membiarkan replikasi tetap berlaku.
CAVEAT
Binary Logs adalah file yang secara serial mengkompilasi (seperti antrian FIFO) semua menyelesaikan transaksi SQL baik sebagai pernyataan SQL atau perubahan baris. Log relai adalah file yang mengumpulkan entri log biner dari server jarak jauh (alias Master).
Dalam Replikasi MySQL
Jika Anda gagal menjadi Budak, dan Anda ingin menjadikannya seorang Master
log-bin=mysql-bin
ke /etc/my.cnf di SlaveAnda harus menyiapkan replikasi dari Budak lain ke Master yang baru dipromosikan dan pastikan data pada Budak cocok dengan Master yang baru dipromosikan
UPDATE 2012-08-13 17:47 EDT
Menurut opsi Dokumentasi MySQL pada
relay-log
, Anda harus mendefinisikannya. Inilah alasannya:sumber