Mysql NDB Cluster其主要功能是在无共享存储的系统中部署基于内存的数据库Cluster,其主要是通过NDB Cluster(简称NDB)存储引擎来实现的。本文使用的NDB Cluster
Mysql NDB Cluster其主要功能是在无共享存储的系统中部署基于内存的数据库Cluster,其主要是通过NDB Cluster(简称NDB)存储引擎来实现的。本文使用的NDB Cluster版本为7.6,主机描述见下表:
1、各个节点软件包安装
我这里创建了一个YUM仓库,所以直接通过yum命令安装。
- NDB管理节点安装软件包
[root@mydb02 ~]# yum -y install mysql-cluster-commercial-management-server
- NDB SQL节点安装软件包
[root@mydb03 ~]# yum -y install mysql-cluster-commercial-server mysql-cluster-commercial-common mysql-cluster-commercial-client
- NDB 数据节点安装软件包
[root@mydb04 ~]# yum -y install mysql-cluster-commercial-data-node mysql-cluster-commercial-client[root@mydb05 ~]# yum -y install mysql-cluster-commercial-data-node mysql-cluster-commercial-client
2、NDB Cluster服务配置
- NDB管理节点配置
//创建配置文件[root@mydb02 ~]# mkdir /var/lib/mysql-cluster[root@mydb02 ~]# vi /var/lib/mysql-cluster/config.ini[tcp default]SendBufferMemory=2MReceiveBufferMemory=2M[NDBD DEFAULT]#设置冗余的分数NoOfReplicas=2#指定存放数据的内存段大小DataMemory=1024M#存放跟踪文件、日志文件、pid文件以及错误日志的目录DataDir=/var/lib/mysql-clusterServerPort=2202#数据库中存储NDB表的最大数量MaxNoOfTables=8192#设置哈希索引在系统中同意时间被使用的总数,该参数的默认值为128。MaxNoOfOrderedIndexes=2048#定义了可在簇中定义的属性数目MaxNoOfAttributes=5000000#开启这个设置会使内地版NDB尝试采用O_DIRECT写LCP、备份、重做日志,通常使用更少的内存和cpu。ODirect=1#每个redo日志文件的大小FragmentLogFileSize=100M#系统中可以定义的最大数量的触发器MaxNoOfTriggers=1000[NDB_MGMD]NodeId=1HostName=192.168.120.93DataDir=/var/lib/mysql-clusterTotalSendBufferMemory=2048M[NDBD]TotalSendBufferMemory=2048MNodeId=2HostName=192.168.120.130DataDir=/var/lib/mysql[NDBD]TotalSendBufferMemory=2048MNodeId=3HostName=192.168.120.131DataDir=/var/lib/mysql[MYSQLD]NodeId=4TotalSendBufferMemory=2048MHostName=192.168.120.129
初始化NDB管理节点,执行一次,后续启动不需要加--initial参数。
[root@mydb02 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini –initial
通过ndb客户端查看,除了管理节点已连接外,其他尚未和管理节点建立连接,如下图:
- NDB数据节点配置
//数据节点1创建my.cnf文件[root@mydb04 ~]# vi /etc/my.cnf[mysqld]ndbclusterndb-connectstring = 192.168.120.93[mysql_cluster] ndb-connectstring = 192.168.120.93//数据节点1初始化[root@mydb04 ~]# ndbd --initial//数据节点2创建my.cnf文件[root@mydb05 ~]# vi /etc/my.cnf[mysqld]ndbclusterndb-connectstring = 192.168.120.93[mysql_cluster] ndb-connectstring = 192.168.120.93//数据节点2初始化[root@mydb05 ~]# ndbd –initial
在管理节点通过ndb客户端可以验证数据节点已建立连接,如下图:
- NDB SQL节点配置
//创建配置文件[root@mydb03 ~]# vi /etc/my.cnf[mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socksymbolic-links=0log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pidndbclusterdefault-storage-engine=ndbclustertmp_table_size = 512M max_heap_table_size = 102400Mmax_allowed_packet = 3072Mlog_timestamps=systemcollation-server=utf8_general_cicharacter-set-server = utf8[mysql_cluster]ndb-connectstring=192.168.120.93//启动MySQL服务[root@mydb03 ~]# systemctl start mysqld
验证SQL节点是否和管理节点建立连接,如下图:
到此,整个ndb cluster服务搭建完成,最后通过SQL节点创建表以及导入数据即可。另外,只有使用了NDBCluster引擎的表才会执行同步操作,如果创建表时未指定engine类型为ndbcluster,则系统不会同步。使用如下命令在SQL节点更改表类型为ndbcluster:mysql> alter table xj.chapter engine=ndbcluster;
3、NDB Cluster服务管理
创建Cluster的时候,已做过初始化操作,后续的启动过程不需要加--initial参数。启动的顺序是先启动ndb管理服务,再启动ndb数据节点服务,最后是SQL节点服务。
- 启动NDB Cluster服务
[root@mydb02 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini[root@mydb04 ~]# ndbd[root@mydb05 ~]# ndbd[root@mydb03 ~]# systemctl start mysqld
- 关闭NDB Cluster服务
//通过NDB客户端执行shutdown可关闭cluster里的所有服务除SQL节点服务[root@mydb02 ~]# ndb_mgmndb_mgm>shutdown[root@mydb03 ~]# systemctl stop mysqld
4、监控NDB Cluster服务
这里使用MySQL Enterprise Monitor工具,这个工具的安装请参考我博客里相关内容。待MySQL Enterprise Monitor agent服务启动后,它会收集操作系统以及MySQL信息发送到服务端,最终从web界面获取相关信息,如下图: