0

运行 mysqlbinlog 将二进制日志从一台服务器加载到另一台服务器。

不断收到消息:

警告:已使用选项 --database。它可以过滤部分事务,但无论如何都会包含 GTID。

嗯——好吗?所以??

好吧,也许这是一个愚蠢的问题,但是我应该如何区分我想要的数据库的“GTID”和我不想要的数据库的“GTID”?换句话说,如何在关闭这个烦人的警告的同时指定特定数据库的事务?

尝试添加“--include-gtids”参数,但我认为它需要一个 GTID 列表。我没有 GTID 列表。我有一个数据库。为什么这么复杂?

4

1 回答 1

1

这很复杂,因为--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.

于 2020-02-27T20:24:28.273 回答