Memahami Replikasi MySQL: Apakah log_bin
Mencatat Segalanya Tanpa Menentukan Basis Data?
Saat mengatur replikasi MySQL untuk beberapa basis data, sering kali muncul kebingungan mengenai konfigurasi log biner. Salah satu pertanyaan umum adalah apakah MySQL akan mencatat setiap perubahan yang dilakukan pada basis data jika Anda tidak menentukan basis data tertentu dalam file konfigurasi. Dalam posting ini, kita akan menjelaskan bagaimana pencatatan biner MySQL bekerja, terutama mengenai direktif binlog-do-db
dan binlog-ignore-db
.
Masalah: Bagaimana MySQL Menangani Pencatatan Basis Data?
Apa Itu Log Biner?
Log biner dalam MySQL digunakan untuk mencatat perubahan yang dilakukan pada basis data. Log ini sangat penting untuk replikasi, membantu slave menjaga salinan data master tetap terkini. Memahami bagaimana mengonfigurasi basis data mana yang dicatat sangatlah penting, terutama ketika Anda bekerja dengan beberapa basis data untuk klien yang berbeda.
Dilema Konfigurasi
Saat mengonfigurasi pengaturan MySQL Anda, Anda mungkin bertanya:
- Bisakah saya melewatkan daftar setiap basis data dan hanya mengabaikan beberapa saja?
- Jika saya menentukan untuk mengabaikan basis data tertentu, apakah semua yang lainnya akan dicatat dengan tepat?
Untuk menggambarkan skenario ini, mari kita pertimbangkan pengaturan file konfigurasi my.cnf
yang tipikal.
Solusi: Menggunakan binlog-ignore-db
Secara Efektif
Menggunakan binlog-ignore-db
Anda dapat memilih untuk menyertakan perintah pengabaian spesifik dalam konfigurasi MySQL Anda. Sebagai contoh:
binlog-ignore-db = mysql
binlog-ignore-db = informationschema
Konfigurasi ini menunjukkan bahwa ketika perintah dieksekusi pada basis data mysql
atau informationschema
, perintah tersebut tidak akan dicatat. Namun, bagian penting terletak pada bagaimana basis data default berinteraksi dengan perintah ini.
Aturan untuk Pencatatan Biner
Menurut dokumentasi MySQL:
- Jika basis data default cocok dengan aturan
binlog-ignore-db
, pernyataan tidak akan ditulis ke log. - Jika basis data default tidak cocok dengan basis data yang diabaikan, kueri akan dicatat.
Ini berarti bahwa selama Anda menjalankan perintah pada basis data yang tidak cocok dengan aturan pengabaian Anda, perubahan tersebut akan dicatat dalam log biner.
Implikasi untuk Replikasi
Ketika Anda menghapus entri binlog-do-db
, mungkin tampak bahwa semuanya dicatat, karena Anda akan melihat perubahan dalam file log biner. Namun, hanya mencatat segalanya tidak menjamin bahwa log ini akan direplikasi di server slave.
Masalah Potensial
- Jika tidak ada spesifikasi
binlog-do-db
yang dibuat dan basis data yang diabaikan tidak cocok, MySQL mungkin mencatat semuanya, tapi slave mungkin tidak menerima perubahan ini. - Untuk mengatasi masalah replikasi, Anda mungkin perlu menggunakan opsi
replicate-do-db
di slave, yang bisa bertentangan dengan upaya konfigurasi yang lebih efisien.
Kesimpulan
Kesimpulannya adalah bahwa mengabaikan entri binlog-do-db
sambil menggunakan binlog-ignore-db
dapat menyebabkan skenario di mana MySQL mencatat segalanya kecuali basis data yang diabaikan. Namun, sangat penting untuk memastikan bahwa Anda mempertahankan konfigurasi yang sesuai di server slave Anda agar replikasi berfungsi dengan efektif.
Dengan memahami nuansa konfigurasi ini, Anda dapat mempertahankan pengaturan replikasi MySQL yang andal tanpa menghadapi kompleksitas yang tidak perlu dalam konfigurasi Anda.
Jika Anda memiliki pertanyaan lebih lanjut tentang replikasi MySQL atau konfigurasi, silakan hubungi kami!