Бинарные журналы 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;

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

redguy
источник
Отключите бинарное ведение журнала во время процесса загрузки, великолепно, именно то, что я искал, это очень работоспособное решение!
Дэвид Паркс
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 для получения подробной информации.

user41362
источник
6
Проблема в том, что replicate-ignore-table является параметром slave , поэтому мастер будет создавать множество записей binlog, они будут переданы в slave (в процессе используется полоса пропускания / пространство) и только потом будут игнорироваться. Во-первых, гораздо эффективнее не создавать эти записи.
SVD