<-- home

MySQL Cluster 基础配置

本文主要讲的是 MySQL Cluster 的配置过程。

MySQL Cluster 官方推荐最少6台机器,2台管理节点,2台SQL节点,2台数据节点。 不过测试的时候都放到一个节点也可以。

我的配置如下:

管理节点 192.168.3.21

SQL节点 192.168.3.22

数据节点1 192.168.3.23

数据节点2 192.168.3.24

我的操作系统是 Ubuntu 16.04, 使用的MySQL Cluster是7.5, 以下步骤都切换到root用户执行。

0 每个节点相同部分

$ apt-get update
$ apt-get install libaio1

下载 MySQL Cluster 版

$ wget https://cdn.mysql.com//Downloads/MySQL-Cluster-7.5/mysql-cluster-gpl-7.5.5-linux-glibc2.5-x86_64.tar.gz
$ tar -xzvf mysql-cluster-gpl-7.5.5-linux-glibc2.5-x86_64.tar.gz
$ mv mysql-cluster-gpl-7.5.5-linux-glibc2.5-x86_64/ mysql

1 管理节点

$ cp mysql/bin/ndb_mgm* /usr/local/bin/
$ chmod 755 /usr/local/bin/ndb_mgm*
$ mkdir -p /var/lib/mysql-cluster/
$ vi /var/lib/mysql-cluster/config.ini

在配置文件/var/lib/mysql-cluster/config.ini中写入以下内容,注意修改各个节点IP

[ndbd default]
NoOfReplicas=2
# Memory to allocate for data storage
DataMemory=2G
# Memory to allocate for index storage
IndexMemory=512M

[mysqld default]

[ndb_mgmd default]

[tcp default]

# Management VPS
[ndb_mgmd]
# Enter the hostname or IP address of the Management VPS
hostname=192.168.3.21

# SQL VPS
[mysqld]
# Enter the hostname or IP address of the SQL VPS
hostname=192.168.3.22

# Data1 VPS
[ndbd]
# Enter the hostname or IP address of the Data1 VPS
hostname=192.168.3.23
DataDir= /var/lib/mysql-cluster

# Data2 VPS
[ndbd]
# Enter the hostname or IP address of the Data2 VPS
hostname=192.168.3.24
DataDir=/var/lib/mysql-cluster

启动管理节点

$ ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
$ ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/ --initial # 有修改节点的时候

启动成功会提示:

MySQL Cluster Management Server mysql-5.7.17 ndb-7.5.5

将启动管理节点命令写入开机执行, 编辑vi /etc/rc.local, 在exit 0前面加入

ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
# 以上命令在exit 0之前

执行下面命令,可以看到ndb_mgmd启动,SQL节点和数据节点还未连接

$ netstat -plntu
$ ndb_mgm -e show

2 数据节点

两个数据节点的操作相同

$ groupadd mysql
$ useradd -g mysql mysql
$ mv mysql /usr/local
$ cd /usr/local/mysql
$ chown -R root:mysql /usr/local/mysql/
$ cd /usr/local/mysql/
$ mv bin/* /usr/local/bin/
$ rm -rf bin/
$ ln -s /usr/local/bin /usr/local/mysql/

编辑配置文件 /etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql

ndbcluster
ndb-connectstring=192.168.3.21

[mysql_cluster]

ndb-connectstring=192.168.3.21

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

执行下面的命令

$ mkdir -p /var/lib/mysql-cluster
$ chown -R mysql /var/lib/mysql-cluster
$ cd /var/lib/mysql-cluster
$ ndbd --initial

3 SQL 节点

$ groupadd mysql
$ useradd -g mysql mysql
$ mv mysql /usr/local
$ cd /usr/local/mysql
$ mv bin/* /usr/local/bin/
$ rm -rf bin/
$ ln -s /usr/local/bin /usr/local/mysql/
$ mysqld --initialize --user=mysql
$ chown -R root:mysql /usr/local/mysql/
$ chown -R mysql /usr/local/mysql/data
$ cp support-files/mysql.server /etc/init.d/mysql
$ /lib/systemd/systemd-sysv-install enable mysql

编辑配置文件 /etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql

ndbcluster
ndb-connectstring=192.168.3.21

[mysql_cluster]

ndb-connectstring=192.168.3.21

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

最后开启 MySQL

$ service mysql start

4 检查

在管理节点执行

$ ndb_mgm -e show

看到如下图,则表示连接成功。