Репликация MySQL: если я не укажу базы данных, будет ли log_bin регистрироваться ВСЕ? - PullRequest
18 голосов
/ 12 августа 2008

Я настраиваю репликацию для сервера, который запускает несколько баз данных (по одной на клиента) и планирую все время добавлять больше в my.cnf, вместо того, чтобы:

binlog-do-db  = databasename 1
binlog-do-db  = databasename 2
binlog-do-db  = databasename 3
...
binlog-do-db  = databasename n

Могу ли я просто иметь

binlog-ignore-db  = mysql
binlog-ignore-db  = informationschema

(а база данных для регистрации не указана) и предполагается, что все остальное записывается в журнал?

РЕДАКТИРОВАТЬ: на самом деле, если я удаляю все мои записи binlog-do-db, он, по-видимому, регистрирует все (как вы видите положение изменения двоичного файла журнала при перемещении базы данных), но на подчиненном сервере ничего не поднимается! (возможно, это случай использования replicate-do-db? это убило бы идею; я думаю, я не могу заставить MySQL автоматически определять, какие базы данных реплицировать).

1 Ответ

11 голосов
/ 12 августа 2008

Это выглядит правильно: http://dev.mysql.com/doc/refman/5.0/en/binary-log.html#option_mysqld_binlog-ignore-db.

Согласно этой ссылке:

Есть некоторые --binlog-ignore-db правила. Соответствует ли база данных по умолчанию любое из правил --binlog-ignore-db?

  • Да: не писать заявление и выходить.
  • Нет: написать запрос и выйти.

Поскольку у вас есть только команды игнорирования, все запросы будут записываться в журнал, если база данных по умолчанию (активная) не совпадает с одной из игнорируемых баз данных.

...