Mysql NDB Cluster其主要功能是在无共享存储的系统中部署基于内存的数据库Cluster,其主要是通过NDB Cluster(简称NDB)存储引擎来实现的。本文使用的NDB Cluster版本为7.6,主机描述见下表:
MySQL NDB Cluster Installation Guide_第1张图片

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=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参数。

    [root@mydb02 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini –initial

    通过ndb客户端查看,除了管理节点已连接外,其他尚未和管理节点建立连接,如下图:
    MySQL NDB Cluster Installation Guide_第2张图片

  • NDB数据节点配置
    //数据节点1创建my.cnf文件
    [root@mydb04 ~]# vi /etc/my.cnf
    [mysqld]
    ndbcluster
    ndb-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]
    ndbcluster
    ndb-connectstring = 192.168.120.93
    [mysql_cluster]  
    ndb-connectstring = 192.168.120.93
    //数据节点2初始化
    [root@mydb05 ~]# ndbd –initial

    在管理节点通过ndb客户端可以验证数据节点已建立连接,如下图:
    MySQL NDB Cluster Installation Guide_第3张图片

  • NDB SQL节点配置
    //创建配置文件
    [root@mydb03 ~]# 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服务
    [root@mydb03 ~]# systemctl start mysqld

    验证SQL节点是否和管理节点建立连接,如下图:
    MySQL NDB Cluster Installation Guide_第4张图片
    到此,整个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_mgm
    ndb_mgm>shutdown
    [root@mydb03 ~]# systemctl stop mysqld

    4、监控NDB Cluster服务

    这里使用MySQL Enterprise Monitor工具,这个工具的安装请参考我博客里相关内容。待MySQL Enterprise Monitor agent服务启动后,它会收集操作系统以及MySQL信息发送到服务端,最终从web界面获取相关信息,如下图:
    MySQL NDB Cluster Installation Guide_第5张图片
    MySQL NDB Cluster Installation Guide_第6张图片
    MySQL NDB Cluster Installation Guide_第7张图片