Репликация MySQL: если я не укажу базы данных, будет ли log_bin записывать ВСЕ?
Я настраиваю репликацию для сервера, который запускает группу баз данных (по одному на каждого клиента) и планирует добавлять все больше времени на 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
(и никакой базы данных для регистрации не указано) и предположим, что все остальное зарегистрировано?
EDIT: на самом деле, если я удалю все записи binlog-do-db, он, похоже, записывает все (как вы видите положение изменения файла двоичного файла при перемещении базы данных), но на подчиненном сервере ничего не получает! (возможно, это так, чтобы использовать replicate-do-db? Это убьет эту идею, я думаю, что я не могу автоматически распознавать, какие базы данных будут реплицироваться).
Ответы
Ответ 1
Это выглядит правильно: http://dev.mysql.com/doc/refman/5.0/en/binary-log.html#option_mysqld_binlog-ignore-db.
Согласно этой ссылке:
Есть некоторые --binlog-ignore-db правила. Соответствует ли база данных по умолчанию любой из правил -binlog-ignore-db?
- Да. Не записывайте инструкцию и выходите.
- Нет. Запишите запрос и выйдите.
Поскольку вы только проигнорируете команды, все запросы будут записываться в журнал до тех пор, пока база данных по умолчанию (активная) не будет соответствовать одной из игнорируемых баз данных.