gpt4 book ai didi

MySQL集群复制配置

转载 作者:行者123 更新时间:2023-11-30 23:24:09 26 4
gpt4 key购买 nike

我正在尝试使用两个 MySQL 集群之间的单个复制 channel 设置复制。我已经按照 mysql.com 的文档看了几次,但似乎无法正常工作。

我遇到的问题是,对未配置为主节点的 SQL 节点进行的查询不会复制 NDBCLUSTER 表的任何 INSERT、UPDATE 或 DELETE 查询,但是当我 INSERT、UPDATE 或 DELETE作为主节点的 SQL 节点,它可以很好地复制到另一个集群。

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

我阅读文档的方式以及我理解集群复制工作的方式是,您的集群中可以有 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 x mysqld API 节点(服务器 1B 和 1C - IP:10.14.64.11 和 10.14.64.12)
2 x ndbd 数据节点(服务器 1D 和 1E - IP:10.14.64.13 和 10.14.64.14)

集群 2(从属集群):
1 x ndb_mgmd 管理节点(服务器 2A - IP:10.13.64.10)
2 x mysqld API 节点(服务器 2B 和 2C - IP:10.13.64.11 和 10.13.64.12)
2 x 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(作为 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

这是服务器 2C(作为 SLAVE)的/etc/my.cnf 文件:

[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; 时,它会立即复制到集群 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

但是,问题出在这里 - 当我在 Server 1B 上运行以下查询时:

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

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

如果我在 Server 1C 上运行类似的查询:

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

我可以在集群 1 AND 集群 2 中的所有 SQL 节点上看到该条目 - 所以在所有四个 SQL 节点上 - 这正是我所期望的。

我一定是遗漏了一些非常简单的东西。我曾多次尝试关闭这些服务器并重新启动 - 但似乎无法在服务器 1B 上获得任何插入、更新或删除查询到我的辅助集群。

如有任何指点或帮助,我们将不胜感激(对于冗长的帖子,我们深表歉意)

问候,
克里斯。

最佳答案

在 1B 上启用 binlog。

启用它添加到 my.cfg:

log-bin=binlog
binlog-format=ROW

关于MySQL集群复制配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14119272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com