Mysql NDB Cluster其主要功能是在无共享存储的系统中部署基于内存的数据库Cluster,其主要是通过NDB Cluster(简称NDB)存储引擎来实现的。本文使用的NDB Cluster版本为7.6,主机描述见下表:
1、各个节点软件包安装
我这里创建了一个YUM仓库,所以直接通过yum命令安装。
- NDB管理节点安装软件包
[[email protected] ~]# yum -y install mysql-cluster-commercial-management-server
- NDB SQL节点安装软件包
[[email protected] ~]# yum -y install mysql-cluster-commercial-server mysql-cluster-commercial-common mysql-cluster-commercial-client
- NDB 数据节点安装软件包
[[email protected] ~]# yum -y install mysql-cluster-commercial-data-node mysql-cluster-commercial-client [[email protected] ~]# yum -y install mysql-cluster-commercial-data-node mysql-cluster-commercial-client
2、NDB Cluster服务配置
- NDB管理节点配置
//创建配置文件 [[email protected] ~]# mkdir /var/lib/mysql-cluster [[email protected] ~]# vi /var/lib/mysql-cluster/config.ini [tcp default] SendBufferMemory=2M ReceiveBufferMemory=2M [NDBD DEFAULT] #设置冗余的分数 NoOfReplicas=2 #指定存放数据的内存段大小 DataMemory=1024M #存放跟踪文件、日志文件、pid文件以及错误日志的目录 DataDir=/var/lib/mysql-cluster ServerPort=2202 #数据库中存储NDB表的最大数量 MaxNoOfTables=8192 #设置哈希索引在系统中同意时间被使用的总数,该参数的默认值为128。 MaxNoOfOrderedIndexes=2048 #定义了可在簇中定义的属性数目 MaxNoOfAttributes=5000000 #开启这个设置会使内地版NDB尝试采用O_DIRECT写LCP、备份、重做日志,通常使用更少的内存和cpu。 ODirect=1 #每个redo日志文件的大小 FragmentLogFileSize=100M #系统中可以定义的最大数量的触发器 MaxNoOfTriggers=1000 [NDB_MGMD] NodeId=1 HostName=192.168.120.93 DataDir=/var/lib/mysql-cluster TotalSendBufferMemory=2048M [NDBD] TotalSendBufferMemory=2048M NodeId=2 HostName=192.168.120.130 DataDir=/var/lib/mysql [NDBD] TotalSendBufferMemory=2048M NodeId=3 HostName=192.168.120.131 DataDir=/var/lib/mysql [MYSQLD] NodeId=4 TotalSendBufferMemory=2048M HostName=192.168.120.129
初始化NDB管理节点,执行一次,后续启动不需要加--initial参数。
[[email protected] ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini –initial
通过ndb客户端查看,除了管理节点已连接外,其他尚未和管理节点建立连接,如下图:
- NDB数据节点配置
//数据节点1创建my.cnf文件 [[email protected] ~]# vi /etc/my.cnf [mysqld] ndbcluster ndb-connectstring = 192.168.120.93 [mysql_cluster] ndb-connectstring = 192.168.120.93 //数据节点1初始化 [[email protected] ~]# ndbd --initial //数据节点2创建my.cnf文件 [[email protected] ~]# vi /etc/my.cnf [mysqld] ndbcluster ndb-connectstring = 192.168.120.93 [mysql_cluster] ndb-connectstring = 192.168.120.93 //数据节点2初始化 [[email protected] ~]# ndbd –initial
在管理节点通过ndb客户端可以验证数据节点已建立连接,如下图:
- NDB SQL节点配置
//创建配置文件 [[email protected] ~]# vi /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid ndbcluster default-storage-engine=ndbcluster tmp_table_size = 512M max_heap_table_size = 102400M max_allowed_packet = 3072M log_timestamps=system collation-server=utf8_general_ci character-set-server = utf8 [mysql_cluster] ndb-connectstring=192.168.120.93 //启动MySQL服务 [[email protected] ~]# 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服务
[[email protected] ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini [[email protected] ~]# ndbd [[email protected] ~]# ndbd [[email protected] ~]# systemctl start mysqld
- 关闭NDB Cluster服务
//通过NDB客户端执行shutdown可关闭cluster里的所有服务除SQL节点服务 [[email protected] ~]# ndb_mgm ndb_mgm>shutdown [[email protected] ~]# systemctl stop mysqld
4、监控NDB Cluster服务
这里使用MySQL Enterprise Monitor工具,这个工具的安装请参考我博客里相关内容。待MySQL Enterprise Monitor agent服务启动后,它会收集操作系统以及MySQL信息发送到服务端,最终从web界面获取相关信息,如下图:
原文地址:http://blog.51cto.com/candon123/2155752
时间: 2024-10-29 18:40:21