MYSQL集群搭建

1、系统环境

服务器 角色 版本
192.168.10.16 管理服务器(MGM) mysql-5.6.29 ndb-7.4.11
192.168.10.17 数据节点(NDB)、SQL节点(API) mysql-5.6.29 ndb-7.4.11
192.168.10.18 数据节点(NDB)、SQL节点(API) mysql-5.6.29 ndb-7.4.11

2、软件环境

  MySQL集群版本:

  mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64.tar.gz

3、搭建集群(Linux环境)

  安装MySQL(所有)

    上传:

      /usr/local/

    解压:

      tar -xvf mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64.tar.gz

    重命名:

      mv mysql-cluster-gpl-7.4.11-linux-glibc2.5-x86_64 mysql

    授权:

      chown -R mysql:mysql /usr/local/msyql

    安装:

      /usr/local/msyql/scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data

  集群配置:

    MGM: 

      创建文件夹:

        mkdir /var/lib/mysql-cluster

      创建配置文件:

        vim config.ini

    

[ndbd default]
NoOfReplicas=1 # 副本数

[ndb_mgmd]
NodeId=1
HostName=192.168.10.16
DataDir=/var/lib/mysql-cluster

[ndbd]
NodeId=2
HostName=192.168.10.17
DataDir=/usr/local/mysql/data

[ndbd]
NodeId=3
HostName=192.168.10.18
DataDir=/usr/local/mysql/data

[mysqld]
NodeId=4
HostName=192.168.10.17

[mysqld]
NodeId=5
HostName=192.168.10.18

[mysqld] # 一定要留一个空的,不然会报 not free node id found for ndbd[NDB]错误

 

      配置的时候记得把# 注释删掉

    NDB:

      创建配置文件:

        vim /etc/my.cnf

        

[mysqld]
ndbcluster
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306

[mysql_cluster]
ndb-connectstring=192.168.10.16

    API:

      由于在同一台机器上就不做配置。

  集群启动:

    MGM:

      /usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

      如果在启动后过了几天又添加了一个数据节点,这时修改了配置文件启动时就必须加上--initial参数,不然添加的节点不会作用在mysql cluster中。

    NDB:

      /usr/local/mysql/bin/ndbd --initial

      与上同理。

    API:

      /usr/local/mysql/bin/mysqld_safe

      修改密码:/usr/local/mysql/bin/mysqladmin -u root password 'password';

4、测试:

  MGM节点:/usr/local/mysql/bin/ndb_mgm

  进入ndb_mgm后 show

  则显示当前集群信息,如果所有节点都已连接,则开始下一步验证。非则就按上述步骤核对。

  验证:

    在SQL节点登录,创建库:create database t1;如果其他SQL节点也出现了这个库则为正常。

    创建表:use t1; create table test(id int(5),name varchar(5)) ENGINE=NDB ; (这一配置尤为重要。否则不会同步) 如果其他节点也出现了这个表则为正常。

    生产数据: insert into t1(id,name) value(1,'a'); 如果其他系欸按也出现条数据。则为正常。

5、至此结束。是不是很简单那。

 

上一篇:Ubuntu 20.10单机安装MySQL 8.0.22 NDB集群


下一篇:mysql-cluster集群搭建步骤