Mysql 警告:选项--database已被使用
运行mysqlbinlog将二进制日志从一台服务器加载到另一台服务器 始终获得信息: 警告:选项--database已被使用。它可以过滤部分事务,但在任何情况下都将包括GTID 是的,好吗?那么 也许这是个愚蠢的问题,但我该如何区分我想要的数据库的“GTID”和我不想要的数据库的“GTID”?换句话说,在关闭此恼人的警告时,如何为特定数据库指定事务Mysql 警告:选项--database已被使用,mysql,mysqlbinlog,gtid,Mysql,Mysqlbinlog,Gtid,运行mysqlbinlog将二进制日志从一台服务器加载到另一台服务器 始终获得信息: 警告:选项--database已被使用。它可以过滤部分事务,但在任何情况下都将包括GTID 是的,好吗?那么 也许这是个愚蠢的问题,但我该如何区分我想要的数据库的“GTID”和我不想要的数据库的“GTID”?换句话说,在关闭此恼人的警告时,如何为特定数据库指定事务 尝试添加“-include 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
中没有选项过滤对特定数据库中的表所做的更改,只有在特定默认数据库处于当前状态时所做的更改。