mysql分布式架构测试
目录
机器准备
主机名称 | ip地址 | 作用 |
---|---|---|
mysql_test1 | 10.1.1.176 | 管理节点 |
mysql_test2 | 10.1.1.177 | SQL节点 |
mysql_test3 | 10.1.1.178 | SQL节点 |
podB | 10.1.1.172 | 数据节点 |
podC | 10.1.1.173 | 数据节点 |
mysql cluster介绍
Mysql cluster的数据更新使用读已提交隔离级别(read-committedisolation)来保证所有节点数据的一致性,使用两阶段提交机制(two-phasedcommit)保证所有节点都有相同的数据(如果任何一个写操作失败,则更新失败)。
管理节点(MGM):这类节点的作用是管理MySQLCluster内的其他节点,如提供配置数据,并停止节点,运行备份等。由于这类节点负责管理其他节点的配置,应该在启动其他节点之前启动这类节点。MGM节点是用命令“ndb_mgmd”启动的。
数据节点(NDB):这类节点用于保存Cluster的数据,数据节点的数目与副本的数目相关,是片段的倍数。例如,对于两个副本,每个副本有两个片段,那么就有4个数据节点,没有必要设定过多的副本,在NDB中数据会尽量的保存在内存中。数据节点使用命令“ndb”启动的;
SQL节点:这是用来访问Cluster数据的节点,对于MySQL Cluster,客户端节点是使用NDB Cluster存储引擎的传统MySQL服务器。通常,SQL节点使用命令“mysqld-ndbcluster”启动的;
MySQL cluster的复制原理
1.Master执行提交语句时,事务被发送到slave,slave开始准备事务的提交。
2.每个slave都要准备事务,然后向master发送OK(或ABORT)消息,表明事务已经准备好(或者无法准备该事务)。
3.Master等待所有Slave发送OK或ABORT消息,如果Master收到所有 Slave的OK消息,它就会向所有Slave发送提交消息,告诉Slave提交该事务;如果 Master收到来自任何一个Slave的ABORT消息,它就向所有 Slave发送ABORT消息,告诉Slave去中止事务。
4.每个Slave等待来自Master的OK或ABORT消息。如果Slave收到提交请求,它们就会提交事务,并向Master发送事务已提交 的确认;如果Slave收到取消请求,它们就会撤销所有改变并释放所占有的资源,从而中止事务,然后向Masterv送事务已中止的确认。
5.Master收到来自所有Slave的确认后,就会报告该事务被提交(或中止),然后继续进行下一个事务处理。
由于同步复制一共需要4次消息传递,故mysql cluster的数据更新速度比单机mysql要慢。所以mysql cluster要求运行在千兆以上的局域网内,节点可以采用双网卡,节点组之间采用直连方式。
下载安装包
官网地址:
下载地址:
通用节点执行项
cd /usr/local/src
wget https://downloads.mysql.com/archives/get/p/14/file/mysql-cluster-gpl-7.6.16-linux-glibc2.12-x86_64.tar.gz
tar -xf mysql-cluster-gpl-7.6.16-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
mv mysql-cluster-gpl-7.6.16-linux-glibc2.12-x86_64 mysql
安装管理节点
1、拷贝命令
cp mysql-cluster/bin/ndb* /usr/local/bin/
命令说明
#ndb_mgm,ndb客户端命令
#ndb_mgmd,ndb管理节点启动命令
#ndb_mgm是ndb_mgmd(MySQL Cluster Server)的客户端管理工具,通过它可以方便的检查Cluster
2、 配置文件
#创建数据库集群配置文件
mkdir /var/lib/mysql-cluster
cat>>/var/lib/mysql-cluster/config.ini<<EOF
[ndbd default]
NoOfReplicas=2 ##定义在Cluster环境中相同数据的份数,最大为4
DataMemory=2G ##每个数据节点中给数据分配的内存
IndexMemory=100M ##每个数据节点中给索引分配的内存
MaxNoOfAttributes=20480 ##该参数用于设置簇中触发程序对象的最大数目。该参数的默认值为768,不修改建表时可能会报708错误
[ndb_mgmd]
NodeId=1
datadir=/var/lib/mysql
HostName=10.1.1.176
[ndbd]
HostName=10.1.1.172
DataDir=/usr/local/mysql/data
NodeId=2
[ndbd]
HostName=10.1.1.173
DataDir=/usr/local/mysql/data
NodeId=3
[mysqld]
HostName=10.1.1.177
NodeId=4
[mysqld]
HostName=10.1.1.178
NodeId=5
#配置参数说明
[NDBD DEFAULT]:表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项,只能有一个。
NoOfReplicas:副本数量,数据节点数必须是副本数的整数倍。
[NDB_MGMD]:表示管理节点的配置,只有一个,默认的对其他节点的端口是1186,故服务器需要开放1186端口。
[NDBD]:表示每个数据节点的配置,可以有多个,分别写上不同数据节点的IP地址。
[MYSQLD]:表示SQL节点的配置,可以有多个,分别写上不同SQL节点的IP地址。
3、 启动管理节点
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
MySQL Cluster Management Server mysql-5.7.32 ndb-7.6.16
2023-02-16 13:40:15 [MgmtSrvr] WARNING -- at line 4: [DB] IndexMemory is deprecated, will use Number bytes on each ndbd(DB)
node allocated for storing indexes instead
特别注意:(#--initial:第一次启动时加上,其它时候不要加,不然会数据清空,除非是在备份、恢复或配置变化后重启时)
标签:02,架构,23,--,2023,mysql,节点,分布式 From: https://www.cnblogs.com/safe-pin666/p/17159593.html