Apakah ada cara untuk melewati tabel tertentu di log biner?
Saya mengonfigurasi log biner sebagai strategi cadangan inkremental di antara cadangan malam. Tetapi kami memiliki satu tabel referensi besar yang akan kami perbarui setiap malam dari proses batch (tabel 70GB). Tabel ini hanya dibaca, dan diperbarui setiap malam menggunakan mysqlimport
.
Selama proses pembaruan untuk tabel hanya referensi ini, log biner menyebabkan penundaan yang cukup serius (terutama ketika saya melakukan pembaruan 70GB penuh). Itu harus dilakukan 70GB dua kali pada dasarnya. yuck.
Tabel referensi saat ini menggunakan MyISAM (saya mencoba InnoDB mencoba memuatnya, jadi mencoba MyISAM).
Jawaban:
Tidak ada opsi mysql untuk mengabaikan tabel dalam log biner.
Jika Anda bisa memindahkan tabel ke database terpisah, Anda mungkin menggunakan opsi binlog-ign-db , tetapi ini memiliki gotcha . Anda harus memahami bagaimana MySQL mengevaluasi aturan replikasi .
Jika Anda dapat menulis skrip pembungkus untuk memuat data alih-alih mysqlimport (halaman manual mengatakan bahwa itu adalah antarmuka baris perintah untuk LOAD DATA INFILE), dan pengguna yang Anda mengimpor data dengan dapat memiliki hak SUPER yang dapat digunakan variabel variabel sql_log_bin sesi Suka:
Ini akan menonaktifkan logging biner untuk sesi saat ini, memuat data, dan mengaktifkan logging biner lagi.
sumber
kamu bisa menggunakan
--replicate-ignore-table=db_name.tbl_name
Lihat http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-ignore-table untuk detailnya.
sumber