我准备对我管理的数据库进行一些更改,并且不确定我想要做的事情是否会正确复制,所以我在测试环境中运行了一些测试,但事实证明他们会这样做但只要我不这样做从MySQL Workbench运行命令。
例如,如果有一个名为db_test
的数据库和名为test_a
的数据库中只有一列id
的表,我尝试从工作台执行此操作:{{1 }}
我在master数据库中获得了预期的行,但它从不复制到slave。
当我执行INSERT INTO db_test.test_a (id) VALUES (114);
时 - 它显示一切都很好,而且是最新的。如果我然后使用另一个SQL客户端,如SequelPro,并以相同的方式插入另一行(但显然是一个不同的id),它将显示在主服务器中并复制到从服务器。
这令我感到困惑,因为我想了解区别是什么,所以我可以避免执行从不复制的行为。
答案 0 :(得分:3)
如果您已在从属服务器上设置--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
配置要复制的数据库和表,或者根本不进行过滤。
另外,请确保已连接到主数据库服务器。