Log biner MySQL - lewati tabel


9

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).


Apakah ini DB Server Standalone DB Server? Apakah DB Server ini seorang Master atau Slave?
RolandoMySQLDBA

Jawaban:


9

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:

    SET @@session.sql_log_bin=0;
    LOAD DATA INFILE 'file_name' 
      -- other LOAD DATA INFILE options ;
    SET @@session.sql_log_bin=1;

Ini akan menonaktifkan logging biner untuk sesi saat ini, memuat data, dan mengaktifkan logging biner lagi.


Nonaktifkan pencatatan biner selama proses pemuatan, brilian, persis apa yang saya cari, ini adalah solusi yang sangat bisa diterapkan!
David Parks

3

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.


6
Masalahnya adalah replikasi-abaikan-tabel adalah pengaturan slave , sehingga master akan membuat banyak entri binlog, mereka ditransfer ke slave (memakan bandwidth / ruang dalam proses), dan hanya kemudian diabaikan. Akan jauh lebih efisien untuk tidak membuat entri-entri itu sejak awal.
SVD
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.