Бинарные журналы MySQL - пропустить таблицу


9

Есть ли способ пропустить конкретную таблицу в двоичных журналах?

У меня есть двоичные журналы, настроенные как стратегия добавочного резервного копирования между ночными резервными копиями. Но у нас есть одна огромная справочная таблица, которую мы собираемся обновлять каждую ночь из пакетного процесса (таблица 70 ГБ). Эта таблица только для чтения и обновляется по ночам mysqlimport.

Во время процесса обновления для этой таблицы только для справки двоичные журналы вызывают довольно серьезную задержку (особенно когда я делаю полное обновление 70 ГБ). Это должно сделать 70 ГБ дважды в основном. Тьфу.

Справочная таблица в настоящее время использует MyISAM (я заблокировал InnoDB, пытаясь загрузить его, поэтому пробовал MyISAM).


Является ли этот сервер БД автономным сервером БД? Является ли этот сервер БД главным или подчиненным?
— RolandoMySQLDBA

Ответы:


9

Там нет опции mysql, чтобы игнорировать таблицу в двоичном журнале.

Если вы можете переместить таблицу в отдельную базу данных, вы можете использовать опцию binlog-ignore-db , но у нее есть свои недостатки . Вы должны понимать, как MySQL оценивает правила репликации .

Если вы можете написать скрипт-обертку для загрузки данных вместо mysqlimport (на странице руководства написано, что это интерфейс командной строки для LOAD DATA INFILE), и пользователь, с которым вы импортируете данные, может иметь привилегию SUPER, вы можете использовать переменную сеанса sql_log_bin подобно:

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

Это отключит двоичное ведение журнала для текущего сеанса, загрузит данные и снова включит двоичное ведение журнала.


Отключите бинарное ведение журнала во время процесса загрузки, великолепно, именно то, что я искал, это очень работоспособное решение!
— Дэвид Паркс

3

ты можешь использовать --replicate-ignore-table=db_name.tbl_name

См. Http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-ignore-table для получения подробной информации.


6
Проблема в том, что replicate-ignore-table является параметром slave , поэтому мастер будет создавать множество записей binlog, они будут переданы в slave (в процессе используется полоса пропускания / пространство) и только потом будут игнорироваться. Во-первых, гораздо эффективнее не создавать эти записи.
— SVD
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.