Mysql 警告:选项--database已被使用

Mysql 警告:选项--database已被使用,mysql,mysqlbinlog,gtid,Mysql,Mysqlbinlog,Gtid,运行mysqlbinlog将二进制日志从一台服务器加载到另一台服务器 始终获得信息: 警告:选项--database已被使用。它可以过滤部分事务,但在任何情况下都将包括GTID 是的,好吗?那么 也许这是个愚蠢的问题,但我该如何区分我想要的数据库的“GTID”和我不想要的数据库的“GTID”?换句话说,在关闭此恼人的警告时,如何为特定数据库指定事务 尝试添加“-include gtid”参数,但我认为它需要一个gtid列表。我没有GTID的列表。我有一个数据库。为什么这么复杂?这很复杂,因为--

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

始终获得信息:

警告:选项--database已被使用。它可以过滤部分事务,但在任何情况下都将包括GTID

是的,好吗?那么

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


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

这很复杂,因为
--database
并不是你想象中的那个意思

这并不意味着只包括对命名数据库的更改

它:

此选项使mysqlbinlog从二进制日志(仅本地日志)中输出条目,这些条目是在使用db_name作为默认数据库时出现的

例如:

USE db1;
INSERT INTO db2.mytable ...
USE db3;
UPDATE db1.mytable JOIN db2.myothertable
SET db1.col1 = ...,
    db2.col2 = ...;
如果您使用
--database db2
,则不会包括此项,因为在将此事务写入二进制日志时,
db2
不是默认数据库

另一个例子:

USE db1;
INSERT INTO db2.mytable ...
USE db3;
UPDATE db1.mytable JOIN db2.myothertable
SET db1.col1 = ...,
    db2.col2 = ...;
如果使用
--databasedb2
,是否应包括由此对
db1.mytable
所做的更改


技巧问题:对这两个表的更改都不会包括在内,因为当前的默认数据库是
db3

嗨,谢谢你的回复。所以现在我知道为什么它很复杂了。我们使用的是CakePHP框架,据我所知,在内部有“USE DB;”和“UPDATE DB.TABLE”语句,它们的基础相当一致。除测试时外,没有其他数据库正在使用。而且,尽管不断发出此警告,该过程似乎确实在复制指定的数据库。是的,但MySQL设计用于任何应用程序,而不仅仅是您的应用程序。:-)MySQL当然是一个很棒的数据库,没有任何争议,但我仍然想知道如何消除这个恼人的警告,同时仍然限制对指定数据库的更新。我目前已经将stderr重定向到一个文件(否则它会通过电子邮件发送给我),但这似乎是一个不必要的麻烦。此外,即使它在99.9%的时间内都能正常工作,但仍然存在一种不太可能的情况,即某人可能会手动登录并更新表,而忽略了“USE DB;”命令。我还需要捕获这些更新,正如您所描述的过程,它们不会。我不知道有什么解决方案可以实现您所描述的。
mysqlbinlog
中没有选项过滤对特定数据库中的表所做的更改,只有在特定默认数据库处于当前状态时所做的更改。