ВНИМАНИЕ: Опция --database была использована - PullRequest
0 голосов
/ 27 февраля 2020

Запуск mysqlbinlog для загрузки двоичных журналов с одного сервера на другой.

Последовательное получение сообщения:

ПРЕДУПРЕЖДЕНИЕ: использовалась опция --database. Он может фильтровать части транзакций, но в любом случае будет включать GTID.

Да - хорошо? Итак, ??

Ну, может быть, это глупый вопрос, но как мне отличить guish "GTID" базы данных, которую я хочу, от "GTID" базы данных, которую я не знаю? не хочешь? Другими словами, как мне указать транзакции для конкретной базы данных при отключении этого надоедливого предупреждения?

Попытка добавить параметр "--include-gtids", но я думаю, что ему нужен список GTID. У меня нет списка GTID. У меня есть база данных. Почему это сложно?

1 Ответ

1 голос
/ 27 февраля 2020

Это сложно, потому что --database не означает, что вы, вероятно, думаете, что это означает.

Это НЕ означает только внесение изменений в именованную базу данных.

Это означает :

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

Например:

USE db1;
INSERT INTO db2.mytable ...

Это НЕ будет включено, если вы используете --database db2, потому что db2 не была базой данных по умолчанию, когда эта транзакция была записана в двоичный журнал.

Другой пример:

USE db3;
UPDATE db1.mytable JOIN db2.myothertable
SET db1.col1 = ...,
    db2.col2 = ...;

Следует ли включить изменения db1.mytable, вытекающие из этого, если вы используете --database db2?

Вопрос с подвохом: изменения в не будут включены ни в таблицу , поскольку текущая база данных по умолчанию db3.

...