需要帮助配置具有两个主机的 MySql-Cluster

需要帮助配置具有两个主机的 MySql-Cluster

感谢您的回复。

我需要您的帮助来按照以下方式配置 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 的教程。

相关内容