Есть ли способ пропустить конкретную таблицу в двоичных журналах?
У меня есть двоичные журналы, настроенные как стратегия добавочного резервного копирования между ночными резервными копиями. Но у нас есть одна огромная справочная таблица, которую мы собираемся обновлять каждую ночь из пакетного процесса (таблица 70 ГБ). Эта таблица только для чтения и обновляется по ночам mysqlimport
.
Во время процесса обновления для этой таблицы только для справки двоичные журналы вызывают довольно серьезную задержку (особенно когда я делаю полное обновление 70 ГБ). Это должно сделать 70 ГБ дважды в основном. Тьфу.
Справочная таблица в настоящее время использует MyISAM (я заблокировал InnoDB, пытаясь загрузить его, поэтому пробовал MyISAM).
Ответы:
Там нет опции mysql, чтобы игнорировать таблицу в двоичном журнале.
Если вы можете переместить таблицу в отдельную базу данных, вы можете использовать опцию binlog-ignore-db , но у нее есть свои недостатки . Вы должны понимать, как MySQL оценивает правила репликации .
Если вы можете написать скрипт-обертку для загрузки данных вместо mysqlimport (на странице руководства написано, что это интерфейс командной строки для LOAD DATA INFILE), и пользователь, с которым вы импортируете данные, может иметь привилегию SUPER, вы можете использовать переменную сеанса sql_log_bin подобно:
Это отключит двоичное ведение журнала для текущего сеанса, загрузит данные и снова включит двоичное ведение журнала.
источник
ты можешь использовать
--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 для получения подробной информации.
источник