MySQL 来自 MySQL Workbench 的查询不会复制

MySQL Queries from the MySQL Workbench won't replicate

我正准备对我管理的数据库进行一些更改,但不确定我想做的事情能否正确复制,所以我在测试环境中运行了一些测试,结果证明它们会,但前提是我不要从 MySQL Workbench.

运行命令

例如,如果有一个名为 db_test 的数据库和一个名为 test_a 的数据库中的 table,只有一个列 id,我尝试从工作台:INSERT INTO db_test.test_a (id) VALUES (114);

我在主数据库中得到了预期的行,但它从未复制到从数据库。

当我执行 SHOW SLAVE STATUS - 它显示一切都很好,并且是最新的。如果我然后使用不同的 SQL 客户端(例如 SequelPro)并以相同的方式插入另一行(但显然是不同的 ID),它会在主服务器中显示并复制到从服务器。

这让我感到困惑和担忧,因为我想了解其中的区别,这样我就可以避免执行永远不会复制的操作。

如果您在从服务器上设置 --replicate-do-db 以过滤数据库 db_test 的复制,复制将根据默认数据库进行过滤,因此请确保您发出 USE db_test。您的客户端可能以这种方式工作,或者您可能在客户端之间发出不同的语句。

在从服务器上使用 --replicate-do-db 设置为 db_test,这将复制:

USE db_test;
INSERT INTO test_a (id) VALUES (114);

但这不会:

USE other_db;
INSERT INTO db_test.test_a (id) VALUES (114);

要使复制工作而不考虑当前的默认数据库,请使用 --replicate-wild-do-table 配置数据库并使用 table 复制或根本不过滤。

此外,请确保您已连接到主数据库服务器。