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 复制或根本不过滤。
此外,请确保您已连接到主数据库服务器。
我正准备对我管理的数据库进行一些更改,但不确定我想做的事情能否正确复制,所以我在测试环境中运行了一些测试,结果证明它们会,但前提是我不要从 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 复制或根本不过滤。
此外,请确保您已连接到主数据库服务器。