感谢您的回复。
我需要您的帮助来按照以下方式配置 MySQL-Clustering 服务器。
我有两个主机, 1]192.168.1.107 2] 192.168.1.125 每个主机都有以下节点条目: 在主机:192.168.1.107: ======================= 1] MGMT节点 2]数据节点 3] MYSQL [API] 节点 在主机上:192.168.1.125: ======================= 1] MGMT节点 2]数据节点 3] MYSQL [API] 节点
两台服务器都位于“负载均衡器”后面,用于管理传入连接。因此,服务器的传入连接或请求将由负载均衡器管理(分配),以控制服务器上的流量。
负载均衡器已经以这样的方式配置,例如,如果一台服务器发生故障或死机(由于系统崩溃),则负载均衡器将负责转发所有传入请求,或者所有请求或连接都应由实时服务器(服务器)响应。
我当前的配置文件如下: ---------------------------------------------- “my.cnf”在主机上:192.168.1.107: ================================ # MySQL 服务器 [mysql_集群] ndb-连接字符串=192.168.1.107:1186 [ndbd] 连接字符串=192.168.1.107:1186,192.168.1.125:1186 [ndb_mgm] 连接字符串=192.168.1.107:1186 [ndb_mgmd] 配置文件=/var/lib/mysql-cluster/config.ini [mysqld] ndbcluster ndb-连接字符串=192.168.1.107 “my.cnf”在主机上:192.168.1.125: ================================ # MySQL 服务器 [mysql_集群] ndb-连接字符串=192.168.1.125:1186 [ndbd] 连接字符串=192.168.1.125:1186,192.168.1.107:1186 [ndb_mgm] 连接字符串=192.168.1.125:1186 [ndb_mgmd] 配置文件=/var/lib/mysql-cluster/config.ini [mysqld] ndbcluster ndb-连接字符串=192.168.1.125 和 主机上的“config.ini”:192.168.1.107: ==================================== [NDBD 默认] NoOfReplicas=2 # 副本数 DataMemory=3500M #为数据存储分配多少内存 IndexMemory=1000M #为索引存储分配多少内存 datadir=/usr/local/mysql/data #此数据节点的数据文件的目录 #最大并发操作数=1048576 #MaxNoOfConcurrentTransactions= 1048576 #MaxNoOfLocalOperations=1048576 #最大并发索引操作数=16384 #最大并发扫描数量=500 #LockPagesInMainMemory=Y #TCP/IP 选项: [TCP 默认] portnumber=2202 # 这是默认值;但是,您可以使用任何 # 管理进程选项: [NDB_MGMD 默认值] datadir=/var/lib/mysql-cluster # MGM 节点日志文件的目录 [NDB_MGMD] hostname=192.168.1.107 # MGM 节点的主机名或 IP 地址 # 数据节点“A”的选项: [无损检测] id=3 # (每个数据节点一个 [NDBD] 部分) hostname=192.168.1.107 # 主机名或 IP 地址 # 数据节点“B”的选项: [无损检测] id=4 hostname=192.168.1.125 #主机名或 IP 地址 # SQL 节点选项: [MySQL数据库] id=5 主机名=192.168.1.107 主机上的“config.ini”:192.168.1.125: ==================================== [NDBD 默认] NoOfReplicas=2 # 副本数 DataMemory=3500M #为数据存储分配多少内存 IndexMemory=1000M #为索引存储分配多少内存 datadir=/usr/local/mysql/data #此数据节点的数据文件的目录 #最大并发操作数=1048576 #MaxNoOfConcurrentTransactions= 1048576 #MaxNoOfLocalOperations=1048576 #最大并发索引操作数=16384 #最大并发扫描数量=500 #LockPagesInMainMemory=Y #TCP/IP 选项: [TCP 默认] portnumber=2202 # 这是默认值;但是,您可以使用任何 # 管理进程选项: [NDB_MGMD 默认值] datadir=/var/lib/mysql-cluster # MGM 节点日志文件的目录 [NDB_MGMD] hostname=192.168.1.125 #MGM节点的主机名或IP地址 # 数据节点“A”的选项: [无损检测] id=3 # (每个数据节点一个 [NDBD] 部分) hostname=192.168.1.107 # 主机名或 IP 地址 # 数据节点“B”的选项: [无损检测] id=4 hostname=192.168.1.125 #主机名或 IP 地址 # SQL 节点选项: [MySQL数据库] id=5 主机名=192.168.1.125
对于上述配置,我尝试将服务器配置为,
在两个数据节点之间创建复制。这意味着如果一台服务器宕机或崩溃,则另一台实时服务器将自动提供相同的数据。
简而言之,节点“A”和“B”之间应有数据复制,如果其中一个节点发生故障,则应提供相同的数据。所有传入请求或连接均由负载平衡器管理。
我尝试在两台服务器上使用以下步骤实现上述配置,但存在一些问题,
在主机 192.168.1.107 上 ===================== 1] [root@ns mysql-cluster]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini 2009-09-07 17:48:24 [MgmSrvr] 信息——NDB 集群管理服务器。 mysql-5.1.34 ndb-7.0.6 2009-09-07 17:48:24 [MgmSrvr] INFO -- 已加载配置来自 '//mysql-cluster/ndb_1_config.bin.1' 2] [root@ns mysql-cluster]# /usr/local/mysql/bin/ndbd 2009-09-07 17:49:36 [ndbd] INFO -- 配置取自 ‘192.168.1.107:1186’,生成:1 3] [root@ns mysql-cluster]# mysqld_safe --ndbcluster –ndb-连接字符串=192.168.1.107& [1] 12189 [root@ns mysql-cluster]# 090907 17:50:17 mysqld_safe 正在登录到 ‘/var/lib/mysql/ns.err’。 090907 17:50:17 mysqld_safe 启动 mysqld 守护进程,数据库来自 /var/lib/mysql 输出(ndb_mgm -e 显示): ============================= [root@ns mysql-cluster]# ndb_mgm -e 显示 已连接到管理服务器:192.168.1.107:1186 集群配置 --------------------- [ndbd(NDB)] 2 个节点 id=3@192.168.1.107(mysql-5.1.34 ndb-7.0.6,节点组:0,主) id=4(未连接,接受来自 192.168.1.125 的连接) [ndb_mgmd(MGM)] 1 个节点 id=1@192.168.1.107(mysql-5.1.34 ndb-7.0.6) [mysqld(API)] 1 个节点 id=5@192.168.1.107(mysql-5.1.34 ndb-7.0.6) 之后执行相同的步骤, 在主机 192.168.1.125 上: ========================= 1] [root@test mysql-cluster]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini 2009-09-07 17:55:24 [MgmSrvr] 信息——NDB 集群管理服务器。 mysql-5.1.34 ndb-7.0.6 2009-09-07 17:55:24 [MgmSrvr] INFO -- 已加载配置来自 '//mysql-cluster/ndb_1_config.bin.1' 2] [root@test mysql-cluster]# /usr/local/mysql/bin/ndbd 2009-09-07 17:55:59 [ndbd] INFO -- 配置取自 ‘192.168.1.125:1186’,生成:1 3] [root@test mysql-cluster]# mysqld_safe --ndbcluster –ndb-连接字符串=192.168.1.125& [2] 5276 [root@test mysql-cluster]# 090907 17:56:30 mysqld_safe 正在登录 '/var/lib/mysql/test.testmachine.com.err'。 090907 17:56:30 mysqld_safe 启动 mysqld 守护进程,数据库来自 /var/lib/mysql 输出(ndb_mgm -e 显示): ============================= [root@test mysql-cluster]# ndb_mgm -e 显示 已连接到管理服务器:192.168.1.125:1186 集群配置 --------------------- [ndbd(NDB)] 2 个节点 id=3(未连接,接受来自 192.168.1.107 的连接) id=4 @192.168.1.125 (mysql-5.1.34 ndb-7.0.6,节点组:0,主节点) [ndb_mgmd(MGM)] 1 个节点 id=1@192.168.1.125(mysql-5.1.34 ndb-7.0.6) [mysqld(API)] 1 个节点 id=5@192.168.1.107(mysql-5.1.34 ndb-7.0.6)
上述结果显示,每个服务器的两个数据节点无法相互通信。所以请告诉我正确的配置或正确的步骤,以完美实现我的方案。
等待您的回复。
答案1
您的集群设计存在根本问题。Mysql 集群需要 3 台服务器。假设连接 2 台服务器的线路被切断,但两台机器仍在运行。如果它们继续运行,它们将获得不同的数据并且不同步。
因此,如果有两台机器,它们都必须关闭,以防止出现裂脑情况,即集群中每个节点都有不同的数据。
您可以添加第三台仅运行管理节点(占用有限资源)的机器,该机器与数据节点协作以决定如何处理故障。如果管理节点消失但两个数据节点仍在运行,它们将继续运行。
以下是 2 个数据节点 + 1 个管理节点配置的说明:http://dev.mysql.com/tech-resources/articles/mysql-cluster-for-two-servers.html
答案2
尝试这关于 howtoforge 的教程。