我正在尝试使用两个MySQL集群之间的单个复制通道设置复制。我已经按照mysql.com的文档进行了几次,但似乎无法让它正常工作。
我遇到的问题是,对未配置为Master的SQL节点的查询不会复制NDBCLUSTER表的任何INSERT,UPDATE或DELETE查询,但是当我在INSERT,UPDATE或DELETE上执行作为主节点的SQL节点,它可以很好地复制到其他集群。
我知道复制已设置,因为如果我在主群集中的任何SQL节点上运行CREATE DATABASE查询,它会复制到Slave群集。同样,如果我在任何SQL节点上运行CREATE TABLE查询以在我的新数据库中创建NDBCLUSTER表,它也可以很好地复制到Slave集群。
我阅读文档的方式以及我如何理解群集复制的工作原理是,您的群集中可以有10个API节点,其中一个节点已配置并专用于复制作为主节点。因此,如果在群集中的任何10个API节点上发生INSERT,UPDATE或DELETE查询,则复制主机和NDB binlog将选择此选项,从而允许从属设备进行复制。这对我来说似乎没有用。
我的理解是否正确?
以下是我如何设置的内容:
所有服务器都是运行64位CentOS 6.2和MySQL Cluster 7.2.8 x86_64的虚拟机。
群集1(主群集):
1 x ndb_mgmd管理节点(服务器1A - IP:10.14.64.10)
2个mysqld API节点(服务器1B和1C - IP:10.14.64.11和10.14.64.12)
2个ndbd数据节点(服务器1D和1E - IP:10.14.64.13和10.14.64.14)
群集2(从属群集):
1 x ndb_mgmd管理节点(服务器2A - IP:10.13.64.10)
2个mysqld API节点(服务器2B和2C - IP:10.13.64.11和10.13.64.12)
2个ndbd数据节点(服务器2D和2E - IP:10.13.64.13和10.13.64.14)
这是一张漂亮的照片,可以帮助解释:
(必须包含一个链接,因为这是我的第一篇文章)
http://cpjon.es/wp-content/uploads/2013/01/mysql-cluster-replication.png
我有复制设置,因此Server 1C是Replication Master,Server 2C是Replication Slave。
这是Server 1C(作为MASTER)的/etc/my.cnf文件:
[mysqld]
ndbcluster
ndb-connectstring=10.14.64.10
log-bin
binlog-format=ROW
server-id=10
[mysql_cluster]
ndb-connectstring=10.14.64.10
这是Server 2C的/etc/my.cnf文件(作为SLAVE):
[mysqld]
ndbcluster
ndb-connectstring=10.13.64.10
server-id=11
[mysql_cluster]
ndb-connectstring=10.13.64.10
当我在SQL Server 1B或1C上运行查询 CREATE DATABASE test_db1; 时,它会立即复制到Cluster 2,我可以在SQL上看到数据库 test_db1 服务器2B和2C。
当我运行以下 CREATE TABLE 查询时:
CREATE TABLE `City` (
`ID` int(11) NOT NULL auto_increment,
`Name` char(35) NOT NULL default '',
`CountryCode` char(3) NOT NULL default '',
`District` char(20) NOT NULL default '',
`Population` int(11) NOT NULL default '0',
PRIMARY KEY (`ID`)
) ENGINE=NDBCLUSTER DEFAULT CHARSET=latin1;
在SQL Server 1B或1C上,它会立即复制到群集2,我可以在SQL Server 2B和2C上看到我新创建的表 City 。
然而,这是问题 - 当我在服务器1B 上运行以下查询时:
INSERT INTO City VALUES (1,'Melbourne','AUS','Victoria',4100000);
我可以看到群集1中所有SQL节点上的条目(即服务器1B和1C),但是无法在群集2中的任何SQL节点上看到该条目(即服务器2B和2C)。
如果我在 Server 1C 上运行类似的查询:
INSERT INTO City VALUES (2,'Sydney','AUS','New South Wales',4600000);
我可以看到群集1中所有SQL节点上的条目 AND 群集2 - 所以在所有四个SQL节点上都是如此 - 这就是我所期望的。
我必须遗漏一些非常简单的事情。我已经尝试吹掉这些服务器并重新启动多次 - 并且似乎无法在服务器1B上获得任何INSERT,UPDATE或DELETE查询进入我的辅助集群。
任何指示或协助都会非常感激(对于冗长的帖子感到抱歉)
的问候,
克里斯。
答案 0 :(得分:0)
在1B上启用binlog。
要启用它,请添加到my.cfg:
log-bin=binlog
binlog-format=ROW