【发布时间】:2014-01-12 19:26:30
【问题描述】:
我只是为 MASTER-MASTER 复制配置了 2 个 mySQL 服务器。 我出于某种原因选择了 RBR 复制。
我在服务器 ONE 上的配置:
#replication
server-id=1
binlog_do_db = db1
binlog_ignore_db = db2
log-bin="C:/ProgramData/MySQL/my56"
auto_increment_increment = 2
auto_increment_offset = 1
binlog_format=ROW
replicate_do_db=db1
在服务器上两个:
#replication
server-id=2
binlog_do_db = db1
log-bin="C:/ProgramData/MySQL/my56"
auto_increment_increment = 2
auto_increment_offset = 2
binlog_format=ROW
replicate_do_db=db1
这样,复制就可以工作了。
例如,在服务器 ONE 上,如果我执行:
USE db1;
INSERT INTO db1.table1 values (foo,bar);
它在服务器 TWO 上工作。
如果在服务器 ONE 我执行:
USE db1;
INSERT INTO second_db.table2 values (foo,bar);
插入不在服务器上执行TWO,很好。
如果在服务器 ONE 我执行:
CREATE table db1.tableFoo(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
创建表不在服务器TWO上执行,很好,因为我选择了基于行的复制,所以我必须在服务器上手动执行CREATE STATEMENT TWO。这就是我想要的。
现在,我的问题是:
如果在服务器 ONE 我执行:
USE db1;
CREATE table db1.tableFoo(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE 在服务器 TWO 上执行,它不是好!通常使用基于行的复制不会复制 CREATE ORDER。
最糟糕的是,如果在 USE db1; 之后如果在另一个数据库中创建一个表,则 CREATE TABLE 会复制到我的服务器 TWO 上,而我的从服务器在服务器 两个 因为 de 数据库不存在...
你有什么想法吗?我不希望任何 CREATE / ALTER / CREATE USER ... 发送到我的复制,即使我使用 à USE db1;
我的工作基于 mySQL 文档,尤其是这个文档:http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html
谢谢你,圣诞快乐!
【问题讨论】:
标签: mysql database-replication