2013-01-02 175 views
1

我正尝试在两个MySQL集群之间设置一个复制通道。我几次遵循了mysql.com的文档,似乎无法正常工作。MySQL集群复制配置

我遇到的问题是,对未配置为主节点的SQL节点所做的查询不是为NDBCLUSTER表复制任何INSERT,UPDATE或DELETE查询,但是当我在INSERT,UPDATE或DELETE行上时作为主节点的SQL节点,它很好地复制到其他集群。

我知道复制是安装的,因为如果我在主集群中的任何SQL节点上运行CREATE DATABASE查询,它会很好地复制到从集群。同样,如果我在任何SQL节点上运行CREATE TABLE查询以在我的新数据库中创建NDBCLUSTER表,它也会复制到Slave集群。

我阅读文档的方式以及我如何理解群集复制的工作原理是您的群集中可以有10个API节点,其中一个节点配置为专用于复制作为主节点。因此,如果在群集中的10个API节点中的任何节点上发生INSERT,UPDATE或DELETE查询,则复制主节点和NDB二进制日志将选择该节点,从而允许从节点进行复制。这似乎不适合我。

我的理解是否正确?

下面是我设置好了:

所有服务器都在运行64位的CentOS 6.2和MySQL集群7.2.8 x86_64的虚拟机。

群集1(主服务器群集):
1×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×ndb_mgmd管理节点(服务器2A - IP:10.13.64.10)
2 x mysqld API no DES(服务器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

我有复制设置,使服务器1C是复制母版和服务器2C是复制从。

这里是服务器1C /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 

这里是在/ etc /我的。对于服务器2C CNF文件(为从):

[mysqld] 
ndbcluster 
ndb-connectstring=10.13.64.10 
server-id=11 

[mysql_cluster] 
ndb-connectstring=10.13.64.10 

当运行CREATE DATABASE test_db1的查询;在SQL Server 1B或1C上,它立即复制到群集2,并且我可以在SQL Server 2B和2C上看到数据库test_db1

当我运行以下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服务器2B和2C。

然而,这里的问题是 - 当我服务器1B上运行以下查询:

INSERT INTO City VALUES (1,'Melbourne','AUS','Victoria',4100000); 

我可以看到在群集中的所有SQL节点上的第1项(即服务器1B和1C),但无法在群集2(即服务器2B和2C)中的任何SQL节点上看到条目。

如果我运行服务器上1C类似的查询:

INSERT INTO City VALUES (2,'Sydney','AUS','New South Wales',4600000); 

我可以看到在群集1 第2组的所有SQL节点上的入口 - 所以所有四个SQL节点上 - 这是我期望的。

我一定错过了一件非常简单的事情。我试图吹走这些服务器,并重新开始许多次 - 并且似乎无法在服务器1B上进行任何INSERT,UPDATE或DELETE查询以进入我的辅助群集。

任何指针或协助将不胜感激(并为长篇大论后不好意思)

问候,
克里斯。

回答

0

在1B上启用binlog。

要启用它添加到my.cfg:

log-bin=binlog 
binlog-format=ROW