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