MySQL集群是为MySQL数据库提供高可用性的技术。 它使用NDB(网络数据库)或NDBCLUSTER作为数据库存储引擎。 MySQL集群被设计为多主ACID架构,没有单点故障,它使用自动分片(分区)来扩展读写过程。
要实现MySQL集群,我们需要3种不同类型的节点:
- 管理节点( ndb_mgmd )
- 用于监视和配置集群。
- 数据节点( ndbd )
- 这些节点用于存储他们提供自动分片的数据,并可以处理复制。
- SQL节点( mysqld )
- 用于连接到所有节点的MySQL Server接口。
在本教程中,我将向您展示如何在Ubuntu 16.04 LTS(Xenial Xerus)上安装“MySQL群集”。
先决条件
- 4节点与Ubuntu服务器16.04
- 192.168.1.11管理节点
- 192.168.1.12 data-node1
- 192.168.1.13 data-node2
- 192.168.1.14 sql-node
- 节点上的根权限。
第1步 - 安装和配置管理节点
在此步骤中,我们将为IP地址为192.168.1.11的集群安装管理节点。 我们安装MySQL集群软件并将其配置为集群的管理节点。
使用ssh登录管理节点:
ssh root@192.168.1.11
TYPE YOUR PASSWORD
A.安装MySQL群集管理节点
在这里打开MySQL集群站点,选择“ Linux-generic ”选项,然后点击“ 下载 ”按钮下载64位软件包。
用wget下载MySQL集群包并解压。
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
将目录重命名为mysql:
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
转到mysql目录并将集群管理命令' ndb_mgmd和ndb_mgm '的2个二进制文件复制到'/ usr / local / bin /'目录,然后使用chmod命令使其可执行。
cd ~/mysql/
cp bin/ndb_mgm* /usr/local/bin/
chmod +x /usr/local/bin/ndb_mgm*
B.配置MySQL群集管理节点
通过为'/ var / lib /'目录中的配置文件创建一个新目录'mysql-cluster'来配置管理节点。
创建一个目录“mysql-cluster”并在目录中创建一个新的配置“config.ini”:
mkdir -p /var/lib/mysql-cluster/
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.11
# Data Node 1
[ndbd]
hostname=192.168.1.12
DataDir= /var/lib/mysql-cluster
# Data Node 1
[ndbd]
HostName=192.168.1.13
DataDir=/var/lib/mysql-cluster
# SQL Node
[mysqld]
hostname=192.168.1.14
# If you to add new SQL Node
[mysqld]
更改用于管理的ndb_mgmd的IP地址,用于数据节点的ndbd和sql节点的mysqld以匹配您的设置。
保存文件并退出。
接下来,使用以下命令启动管理节点进程:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/
通过向/etc/rc.local文件添加命令使其在启动时启动:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster/' >> /etc/rc.local
如果看到结果:
MySQL Cluster Management Server mysql-5.6.31 ndb-7.4.12
然后管理节点进程正在运行。
使用另一个命令检查管理节点:
# Checking port 1186 used by ndb_mgmd
netstat -plntu
# Checking the management node is ready
ndb_mgm
show
第2步 - 安装并配置数据节点
在这一步中,我们将安装MySQL集群软件并将其配置为数据节点。 我们将使用2个ubuntu 16.04服务器作为数据节点:data-node1,IP地址为192.168.1.12,data-node2的IP地址为192.168.1.13。
使用ssh登录到data-node1服务器:
ssh root@192.168.1.12
A.在数据节点上安装MySQL集群
在我们安装MySQL集群软件之前,我们需要安装一个新的软件包“ libaio1 ”并创建一个新的用户和组mysql 。 以root身份运行以下命令:
apt-get install libaio1
groupadd mysql
useradd -g mysql mysql
现在下载MySQL集群包“ Linux-Generic ”,将目录解压并重命名为mysql。
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
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
将'mysql'目录移动到'/ usr / local /'并转到该目录。
mv mysql /usr/local/
cd /usr/local/mysql/
运行用于创建系统数据库的脚本:
./scripts/mysql_install_db --user=mysql
如果没有错误,请将mysql服务文件复制到“ /etc/init.d ”目录中,并将mysql启动脚本添加到启动时运行。
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql
接下来,将所有的mysql二进制命令移动到' / usr / local / bin '目录并创建一个新的符号链接。
mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/
将mysql目录的所有者更改为用户root和组mysql,并将数据目录更改为mysql作为所有者。
chown -R root:mysql .
chown -R mysql data
B.配置MySQL群集数据节点
用vim创建一个新的mysql配置文件' my.cnf '
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.11
[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11
# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
保存并退出。
为数据节点创建新目录,并将所有权更改为mysql用户。
mkdir -p /var/lib/mysql-cluster/
chown -R mysql /var/lib/mysql-cluster
C.在数据节点上启动MySQL
使用以下命令启动mysql服务:
ndbd --initial
systemctl start mysql
确保没有错误,结果如下(data-node2):
数据节点上的MySQL已启动。 现在您可以使用以下命令配置MySQL密码:
mysql_secure_installation
或访问MySQL shell。
mysql -u root -p
注意 :
在“ data-node2 ”服务器上重新设置此步骤IP地址192.168.1.13。
第3步 - 安装和配置SQL节点
在此步骤中,我们将安装MySQL Cluster软件并将其配置为SQL Node。 该节点用于访问数据节点上的数据库。 安装过程与数据节点相同,但我们不必在SQL节点中运行ndbd服务。
使用ssh登录到SQL节点:
ssh root@192.168.1.14
A.在SQL节点上安装MySQL集群
安装libaio1包并创建一个新的用户和组mysql:
apt-get install libaio1
groupadd mysql
useradd -g mysql mysql
从站点下载mysql群集包,提取并重命名它:
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
mv mysql-cluster-gpl-7.4.12-linux-glibc2.5-x86_64/ mysql/
移动mysql目录:
mv mysql /usr/local/
cd /usr/local/mysql/
运行mysql_install_db脚本:
./scripts/mysql_install_db --user=mysql
复制服务文件并将其添加到启动时启动:
cp support-files/mysql.server /etc/init.d/mysql
systemctl enable mysql
将所有mysql二进制文件移动到'/ usr / local / bin '目录中:
mv bin/* /usr/local/bin/
rm -rf bin/
ln -s /usr/local/bin /usr/local/mysql/
更改所有文件和目录的所有者:
chown -R root:mysql .
chown -R mysql data
B.配置MySQL集群SQL节点
使用vim创建一个新的my.cnf配置文件:
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.11
[mysql_cluster]
# IP address management node
ndb-connectstring=192.168.1.11
# MySQL Pid and Log
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
保存并退出。
C.启动SQL节点
使用systemctl命令启动mysql服务启动SQL节点:
systemctl start mysql
SQL节点启动,现在可以配置MySQL的密码。
mysql_secure_installation
第4步 - 测试
测试从SQL节点创建一个新的数据库。
mysql -u root -p
TYPE PASSWORD
create database nanana;
检查数据库是否在数据节点服务器上复制。
当节点关闭时,另一个节点将处理来自SQL节点的连接。
mysql -u root -p
TYPE PASSWORD
show databases;
从管理节点检查集群状态:
ndb_mgm
show
第5步 - 其他提示
执行安全重启和关闭集群。
转到集群管理节点并键入以下命令关闭集群:
ndb_mgm
shutdown
该命令将关闭数据节点上的所有ndb服务。
如果要再次启动群集,可以在管理节点上运行以下命令:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir = / var / lib / mysql-cluster /
并在所有数据节点上运行以下命令:
ndbd
systemctl start mysql
然后在SQL节点上启动mysql服务:
systemctl start mysql
现在你的MySQL集群正在运行。