MySQL集群是由一组计算机构成,每台计算机上均运行着相关MySQL进程,包括MySQL服务器,NDB/NDBCLUSTER的数据节点,管理服务器。这种分布式节点架构的存储方案的目的是提供容错性和高性能。
MySQL集群需要3种类型的节点:
管理节点(ndb_mgmd):用来监控和配置集群
数据节点(ndbd):用于存储数据
SQL节点(mysqld):用来连接节点
我要使用4个Ubuntu 16.04系统组成MySQL集群:
192.168.1.111:管理节点
192.168.1.112:数据节点
192.168.1.113:数据节点
192.168.1.114:SQL节点
1、安装配置管理节点
在192.168.1.111上操作。
下载对应的mysql-cluster包:http://dev.mysql.com/downloads/cluster/
$ cd
$ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
解压:
$ tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
$ cd mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64
把’ndb_mgmd和ndb_mgm拷贝到usr/local/bin/目录:
$ sudo cp bin/ndb_mgm* /usr/local/bin/
$ sudo chmod +x /usr/local/bin/ndb_mgm*
创建配置文件:
$ sudo mkdir -p /var/lib/mysql-cluster/
$ sudo vim /var/lib/mysql-cluster/config.ini
写入如下内容:
[ndbd default]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
[mysqld default]
[ndb_mgmd default]
[tcp default]
# Cluster Control / Management node
[ndb_mgmd]
hostname=192.168.1.111
# Data Node 1
[ndbd]
hostname=192.168.1.112
DataDir= /var/lib/mysql-cluster
# Data Node 2
[ndbd]
HostName=192.168.1.113
DataDir=/var/lib/mysql-cluster
# SQL Node
[mysqld]
hostname=192.168.1.114
# 添加新SQL Node
[mysqld]
注意替换上面的ip。
启动管理节点:
$ ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/ # 监听1186端口
运行ndb_mgm命令行客户端:
$ ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm>
show查看各节点状态;exit退出交互模式;shutdown关闭集群;help查看帮助。
2、安装配置数据节点
分别在192.168.1.112、192.168.1.113执行如下操作。
安装libaio1软件包:
$ sudo apt-get install libaio1
创建mysql用户和组:
$ sudo groupadd mysql
$ sudo useradd -g mysql mysql
下载mysql-cluster包:
$ cd
$ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
解压:
$ tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
$ sudo mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64 /usr/local/mysql
$ cd /usr/local/mysql/
创建系统数据库:
$ ./scripts/mysql_install_db --user=mysql
创建服务启动脚本:
$ sudo cp support-files/mysql.server /etc/init.d/mysql.server
$ sudo systemctl enable mysql.server
创建链接:
$ sudo mv bin/* /usr/local/bin/
$ sudo rm -rf bin/
$ sudo ln -s /usr/local/bin /usr/local/mysql/
更改权限:
$ sudo chown -R root:mysql .
$ sudo chown -R mysql data
编辑配置文件:
$ sudo vim /etc/my.cnf
写入如下内容:
# MySQL Config
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Run ndb storage engine
ndbcluster
# IP address management node
ndb-connectstring=192.168.1.111
[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.111
# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
注意把上面的IP替换为管理节点服务器的IP。
创建数据目录:
$ sudo mkdir -p /var/lib/mysql-cluster/
$ sudo chown -R mysql /var/lib/mysql-cluster
启动MySQL服务:
$ sudo ndbd --initial # 连接192.168.1.111
$ sudo systemctl start mysql
设置MySQL密码和其它选项:
$ mysql_secure_installation
MySQL命令行客户端:
$ mysql -u root -p
3、安装配置SQL节点
在192.168.1.114上操作。
SQL节点是用来访问数据节点数据库的,安装步骤和数据节点类似,除了不需要运行ndbd服务。
安装libaio1软件包:
$ sudo apt-get install libaio1
创建mysql用户和组:
$ sudo groupadd mysql
$ sudo useradd -g mysql mysql
下载mysql-cluster包:
$ cd
$ wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
解压:
$ tar -xzvf mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64.tar.gz
$ sudo mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64 /usr/local/mysql
$ cd /usr/local/mysql/
创建系统数据库:
$ ./scripts/mysql_install_db --user=mysql
创建服务启动脚本:
$ sudo cp support-files/mysql.server /etc/init.d/mysql.server
$ sudo systemctl enable mysql.server
创建链接:
$ sudo mv bin/* /usr/local/bin/
$ sudo rm -rf bin/
$ sudo ln -s /usr/local/bin /usr/local/mysql/
更改权限:
$ sudo chown -R root:mysql .
$ sudo chown -R mysql data
编辑配置文件:
$ sudo vim /etc/my.cnf
写入如下内容:
# MySQL Config
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
# Run ndb storage engine
ndbcluster
# IP address management node
ndb-connectstring=192.168.1.111
[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.111
# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
注意把上面的IP替换为管理节点服务器的IP。
启动MySQL服务:
$ sudo systemctl start mysql
设置MySQL密码和其它选项:
$ mysql_secure_installation
MySQL命令行客户端:
$ mysql -u root -p
4、测试
在管理节点上,使用show查看节点状态:
$ ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> show
在SQL节点上创建一个数据库:
$ mysql -u root -p
mysql> create database mydata;
查看数据节点是否复制了前面创建的数据库:
$ mysql -u root -p
mysql> show databases;
重启集群:
# 管理节点
$ ndb_mgm
-- NDB Cluster -- Management Client --
ndb_mgm> shutdown # 关闭整个集群
$ sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
# 数据节点
$ sudo ndbd
$ sudo systemctl start mysql
# SQL节点
$ sudo systemctl start mysql
MySQL集群文档:http://dev.mysql.com/doc/refman/5.7/en/mysql-cluster-overview.html