盒子
盒子
文章目录
  1. 安装SQL节点
  2. 安装NDB节点
  3. 安装管理节点
  4. 使用cluster
  5. MySQL Cluster集群的关闭

MySQL Cluster搭建

配置了下MySQL Cluster,留下一点笔记

首先下载mysql-cluster,直接安装.

安装SQL节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@192.168.0.1 ~]# groupadd mysql
[root@192.168.0.1 ~]# useradd -r -g mysql mysql
[root@192.168.0.1 ~]# cd /usr/local/
[root@192.168.0.1 local]# ln -s /opt/mysql/server-5.6 mysql
[root@192.168.0.1 local]# cd mysql
[root@192.168.0.1 mysql]# chown -R mysql .
[root@192.168.0.1 mysql]# chgrp -R mysql .
[root@192.168.0.1 mysql]# mkdir /data/mysql
[root@192.168.0.1 mysql]# chown -R mysql.mysql /data/mysql/
[root@192.168.0.1 mysql]# \cp support-files/my-large.cnf /etc/my.cnf
[root@192.168.0.1 mysql]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql # 这一步会出现错误,则apt-get install libaio1 libaio-dev
[root@192.168.0.1 mysql]# chown -R root .
[root@192.168.0.1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@192.168.0.1 mysql]# chmod 755 /etc/init.d/mysqld
[root@192.168.0.1 mysql]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /root/.bash_profile #添加环境变量,执1命令方便一点
[root@192.168.0.1 mysql]# source /root/.bash_profile


修改/etc/my.cnf配置文件,追加如下配置

1
2
3
4
5
6
7
[mysqld]
datadir=/data/mysql
basedir= /usr/local/mysql
ndbcluster # 运行NDB存储引擎
ndb-connectstring=192.168.0.1 # 管理节点
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.1 #管理节点

安装NDB节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@192.168.0.2 ~]# groupadd mysql
[root@192.168.0.2 ~]# useradd -r -g mysql mysql
[root@192.168.0.2 ~]# cd /usr/local/
[root@192.168.0.2 local]# ln -s /opt/mysql/server-5.6 mysql
[root@192.168.0.2 local]# cd mysql
[root@192.168.0.2 mysql]# chown -R mysql .
[root@192.168.0.2 mysql]# chgrp -R mysql .
[root@192.168.0.2 mysql]# mkdir /data/mysql
[root@192.168.0.2 mysql]# chown -R mysql.mysql /data/mysql/
[root@192.168.0.2 mysql]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql/ --basedir=/usr/local/mysql
这一步会出现错误,则apt-get install libaio1 libaio-dev
[root@192.168.0.2 mysql]# chown -R root .
[root@192.168.0.2 mysql]# \cp support-files/my-large.cnf /etc/my.cnf
[root@192.168.0.2 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
[root@192.168.0.2 mysql]# chmod 755 /etc/init.d/mysqld
[root@192.168.0.2 mysql]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /root/.bash_profile
[root@192.168.0.2 mysql]# source /root/.bash_profile
1
[root@192.168.0.2 mysql]# mkdir /data/mysql-cluster/data -p

上面这个目录用来存放NDB节点的数据,在管理节点里面也要配置为该目录,配置其他的目录会报错,说无法创建各种日志文件。上面提到的/data/mysql是用来在没使用NDB时存放的数据,和平时我们使用的mysql没有区别。

和SQL节点是一样的,修改/etc/my.cnf,追加如下内容:

1
2
3
4
5
6
7
[mysqld]
datadir=/data/mysql
basedir= /usr/local/mysql
ndbcluster # 运行NDB存储引擎
ndb-connectstring=192.168.0.1 # 管理节点
[MYSQL_CLUSTER]
ndb-connectstring=192.168.0.1 #管理节点

安装管理节点

1
2
3
4
5
6

[root@192.168.0.1 ~]# mkdir /usr/local/mysql/bin -p
[root@192.168.0.1 ~]# scp 192.168.0.2:/usr/local/mysql/bin/ndb_mgm /usr/local/mysql/bin/
[root@192.168.0.1 ~]# scp 192.168.0.2:/usr/local/mysql/bin/ndb_mgmd /usr/local/mysql/bin/
[root@192.168.0.1 ~]# echo "export PATH=$PATH:/usr/local/mysql/bin" >> /root/.bash_profile
[root@192.168.0.1 ~]# source /root/.bash_profile

我配置的管理节点和SQL节点在同一台机器上,所以上面的步骤不需要

  1. 在/data/创建目录mysql-cluster,该目录会存放相关日志文件,以及pid号。并在目录中创建配置文件config.ini

    1
    2
    3
    [root@192.168.0.1 ~]# mkdir /data/mysql-cluster
    [root@192.168.0.1 ~]# cd /data/mysql-cluster/
    [root@192.168.0.1 mysql-cluster]# touch config.ini
  2. config.ini文件配置如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    [root@192.168.0.1 ~]# cat /data/mysql-cluster/config.ini 
    [NDBD DEFAULT]
    NoOfReplicas=1 #每个数据节点的镜像数量,通常最低设置为2,否则就没有意义了,这里是方便后面测试。
    DataMemory=64M #每个数据节点中给数据分配的内存
    IndexMemory=16M #每个数据节点中给索引分配的内存
    #管理节点
    [NDB_MGMD]
    nodeid=1
    hostname=192.168.0.1 #管理节点ip
    datadir=/data/mysql-cluster #管理节点数据目录,存放相关日志,以及pid文件
    #第一个 ndbd 节点:
    [NDBD]
    nodeid=2
    hostname=192.168.0.2 #数据节点ip地址
    datadir=/data/mysql-cluster/data
    #第二个 ndbd 节点:
    [NDBD]
    nodeid=3
    hostname=192.168.0.3
    datadir=/data/mysql-cluster/data #NDB点数据存放目录
    # SQL node options:
    [MySQLD]
    nodeid=4
    hostname=192.168.0.5 #SQL节点ip地址
    [MySQLD]
    nodeid=5
    hostname=192.168.0.6
    [MySQLD] #这里保留了一个空节点。否则停止NDB会报错:No free node id found for ndbd(NDB).

[NDB_MGMD] 表示管理节点的配置,只能有一个。
[NDBD DEFAULT] 表示每个数据节点的默认配置,在每个节点的[NDBD]中不用再写这些选项,只能有一个。
[NDBD] 表示每个数据节点的配置,可以有多个。
[MYSQLD] 表示SQL节点的配置,可以有多个,分别写上不同的SQL节点的ip地址;也可以不用写,只保留一个空节点,表示任意一个ip地址都可以进行访问。此节点的个数表明了可以用来连接数据节点的SQL节点总数。

使用cluster

启动顺序为:管理节点->数据节点->SQL节点

  1. 启动管理节点:ndb_mgmd -f /data/mysql-cluster/config.ini
  2. 启动NDB(数据节点):ndbd --initial
    注意:只是在第一次启动或在备份/恢复或配置变化后重启ndbd时,才加–initial参数!原因在于,该参数会使节点删除由早期ndbd实例创建的,用于恢复的任何文件,包括用于恢复的日志文件。
  3. 启动SQL节点(启动mysql服务):/etc/init.d/mysqld start

MySQL Cluster集群的关闭

关闭顺序:SQL节点->数据节点->管理节点

  1. SQL节点关闭:/etc/init.d/mysqld stop
  2. (NDB)数据节点关闭:ndbd stop
  3. 管理节点关闭
    1
    2
    3
    4
    5
    6
    ndb_mgm> shutdown
    Node 2: Cluster shutdown initiated
    Node 3: Cluster shutdown initiated
    3 NDB Cluster node(s) have shutdown.
    Disconnecting to allow management server to shutdown.
    Node 3: Node shutdown completed.