所有数据库的MySQL Master-Master复制。 怎么样?

背景 :在这个出色的指南中,我有两个MySQL 5.1服务器在主 – 主行复制(RBR)中设置。 我想要复制所有数据库,并定期添加新的数据库。

目标 :我希望能够通过将数据库添加到其中一台服务器来将新数据库添加到复制中; 不必停止两个从站,更改configuration文件,重新启动MySQL服务器,并再次启动从站。

问题 :从我读到的内容来看,我我可以通过简单地省略每个服务器configuration中的任何binlog-do-dbbinlog-ignore-dbreplicate-do-dbreplicate-ignore-db设置来完成此操作。我不能确定。 关于如何评估数据库级和表级复制选项的MySQL文档让我觉得根本没有办法完成这个任务。

下面复制我的/etc/mysql/my.cnf文件的相关部分。 我在正确的轨道上? 我甚至想要什么?

主人1

 [mysqld] binlog-format = row server-id = 1 replicate-same-server-id = 0 auto-increment-increment = 2 auto-increment-offset = 1 master-host = <master2_ip> master-user = slave_user master-password = <password> master-connect-retry = 60 log-bin = /var/log/mysql/mysql-bin.log relay-log = /var/lib/mysql/slave-relay.log relay-log-index = /var/lib/mysql/slave-relay-log.index expire_logs_days = 14 max_binlog_size = 2048M 

主人2

 [mysqld] binlog-format = row server-id = 2 replicate-same-server-id = 0 auto-increment-increment = 2 auto-increment-offset = 2 master-host = <master1_ip> master-user = slave_user master-password = <password> master-connect-retry = 60 log-bin = /var/log/mysql/mysql-bin.log relay-log = /var/lib/mysql/slave-relay.log relay-log-index = /var/lib/mysql/slave-relay-log.index expire_logs_days = 14 max_binlog_size = 2048M 

这是我为两个主人做的

 log-bin = mysqld-bin binlog-ignore-db=test binlog-ignore-db=information_schema binlog-ignore-db=mysql log-slave-updates replicate-ignore-db=test replicate-ignore-db=information_schema replicate-ignore-db=mysql relay-log=mysqld-relay-bin 

关于制作数据库,关于使用CREATE DATABASE进行基于行的复制仍然存在错误报告。

这个报告已经结束,但是这个错误再次出现在MySQL 5.1.47中
本报告基于MySQL Cluster(NDB存储引擎)
此报告基于复制野外忽略表仍然复制。

基于行的复制会导致二进制日志以非常高的速度增长,这可能会导致networkingstream量仅将二进制日志数据传送到从站的中继日志。

@Mike说他的数据库创build工作和复制就好了。 我根本不怀疑。 我是一个MySQL(eh Oracle)的小编,一旦数据库被实例化,没有从基于行的复制中获得所有的扭曲。

如果您仍然希望在二进制日志中使用基于行的条目,则可能需要切换到row_format MIXED。 在内部,二进制日志格式往往会在语句和固定之间浮动:(请参阅http://bugs.mysql.com/bug.php?id=40146 )。 更多的错误报告是closures使用混合和回避基于行( http://bugs.mysql.com/bug.php?id=39701 ),但仍然存在间歇性的问题。

最后说明

为了您自己的理智,请恢复到基于语句的复制,从而使CREATE DATABASE(这是一个SQL语句)对于创build的数据库的后续SQL稳定和一致。 事实上,最近的错误报告显示,最好使用基于语句的复制,而不pipe文档中关于数据库级和表级选项的说明。

嗯…你还必须找出一种方法来处理/区分自动递增的键和字段。 这看起来很有趣.. http://mysql-mmm.org/

cmiiw我以为你应该能够在master1和master2上创build数据库,而无需更改conf或停止slave,但要确保主master复制正在运行。 因为你没有定义需要复制的数据库,所以如果你没有在my.cnf上定义数据库,所有的数据库都将被复制。