如何在 CentOS 7 上安装和配置 MySQL 集群
在此页
- 先决条件
- 第 1 步 - 设置管理节点
MySQL Cluster 旨在提供具有高可用性和低延迟的 MySQL 兼容数据库。 MySQL Cluster 技术通过 NDB(网络数据库)和 NDBCLUSTER 存储引擎实现,为 MySQL 数据库系统提供无共享集群和自动分片。在shared-nothing架构中,每个节点都有自己的内存和磁盘,不推荐也不支持使用NFS、SAN等共享存储。
要实现 MySQL 集群,我们必须安装三种类型的节点。每种节点类型都将安装在自己的服务器上。这些组件是:
1. 管理节点 - NDB_MGMD/MGM
集群管理服务器用于管理集群的其他节点。我们可以从管理节点创建和配置新节点、重启、删除或备份集群上的节点。
2. 数据节点 - NDBD/NDB
这是节点之间发生同步和数据复制过程的层。
3. SQL 节点 - MySQLD/API
应用程序用来连接到数据库集群的接口服务器。在本教程中,我将指导您使用 centOS 7 安装和配置 MySQL 集群。我们将配置管理节点、两个数据节点和两个 SQL 节点。
先决条件
- 操作系统是 CentOS 7 - 64 位。
- 5 个 CentOS 服务器或虚拟机。我将使用主机名和 IP 地址,如下所示:
- 管理节点
db1=192.168.1.120 - 数据节点
db2=192.168.1.121
db3=192.168.1.122 - SQL 节点
db4=192.168.1.123
db5=192.168.1.124
步骤 1 - 设置管理节点
第一步是使用 CentOS 7 db1 和 IP 192.168.1.120 创建“管理节点”。确保您以 root 用户身份登录到 db1 服务器。
A. 下载MySQL Cluster软件
我将使用 wget 从 MySQL 站点下载它。我在这里使用与 CentOS 7 兼容的“Red Hat Enterprise Linux 7/Oracle Linux 7(x86,64 位),RPM Bundle”。然后提取 tar 文件。
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tarB. 安装和删除包
在安装 MySQL Cluster 的 rpm 包之前,您需要安装 MySQL-Cluster 服务器所需的 perl-Data-Dumper。在我们安装 MySQL Cluster 之前,您需要删除 mariadb-libs。
yum -y install perl-Data-Dumper
yum -y remove mariadb-libsC.安装MySQL集群
使用这些 rpm 命令安装 MySQL Cluster 包:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm确保没有错误。
D.配置MySQL集群
为配置文件创建一个新目录。我将使用\/var/lib/mysql-cluster\ 目录。
mkdir -p /var/lib/mysql-cluster
然后在mysql-cluster目录下新建集群管理的配置文件名为\config.ini\。
cd /var/lib/mysql-cluster
vi config.ini粘贴下面的配置:
[ndb_mgmd default]
# Directory for MGM node log files
DataDir=/var/lib/mysql-cluster
[ndb_mgmd]
#Management Node db1
HostName=192.168.1.120
[ndbd default]
NoOfReplicas=2 # Number of replicas
DataMemory=256M # Memory allocate for data storage
IndexMemory=128M # Memory allocate for index storage
#Directory for Data Node
DataDir=/var/lib/mysql-cluster
[ndbd]
#Data Node db2
HostName=192.168.1.121
[ndbd]
#Data Node db3
HostName=192.168.1.122
[mysqld]
#SQL Node db4
HostName=192.168.1.123
[mysqld]
#SQL Node db5
HostName=192.168.1.124保存文件并退出。
E. 启动管理节点
接下来使用以下命令启动管理节点:
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
结果应该与此类似:
MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2016-03-22 19:26:08 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2016-03-22 19:26:08 [MgmtSrvr] INFO -- Successfully created config directory管理节点已启动,现在您可以使用命令“ndb_mgm”来监控节点:
ndb_mgm
show可以看到管理节点已经启动:mysql-6.6和ndb-7.4。
第 2 步 - 设置 MySQL 集群数据节点
我们将为数据节点使用 2 个 CentOS 服务器。
- db2=192.168.1.121
- db3=192.168.1.122
A. 以root用户登录并下载MySQL Cluster软件
使用 ssh 登录到 db2 服务器:
ssh
然后下载MySQL Cluster包并解压:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tarB. 安装和删除包
安装 perl-Data-Dumper 并删除 mariadb-libs:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libsC.安装MySQL集群
现在我们可以使用这些 rpm 命令为数据节点安装 MySQL Cluster 包:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm确保没有错误。
D.配置数据节点
使用 vi 编辑器在 /etc 目录下新建一个配置文件:
vi /etc/my.cnf
下面粘贴配置:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address of Management Node保存文件并退出。
然后为我们在管理节点配置文件“config.ini”中定义的数据库数据创建新目录。
mkdir -p /var/lib/mysql-cluster
现在启动数据节点/ndbd:
ndbd
结果:
2016-03-22 19:35:56 [ndbd] INFO -- Angel connected to '192.168.1.120:1186'
2016-03-22 19:35:56 [ndbd] INFO -- Angel allocated nodeid: 2数据节点db2连接管理节点ip 192.168.1.120。
E. 在 db3 服务器上重做步骤 2.A - 2.D。
由于我们有 2 个数据节点,请在我们的第二个数据节点上重做步骤 2.A - 2.D。
第 3 步 - 设置 SQL 节点
此步骤包含为应用程序提供对数据库的访问的 SQL 节点的设置。我们为 SQL 节点使用 2 个 CentOS 服务器:
- db4=192.168.1.123
- db5=192.168.1.124
A.登录并下载MySQL Cluster
以 root 用户身份登录到 db4 服务器:
ssh
并下载 MySQL Cluster 包:
cd ~
wget http://dev.mysql.com/get/Downloads/MySQL-Cluster-7.4/MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tar
tar -xvf MySQL-Cluster-gpl-7.4.10-1.el7.x86_64.rpm-bundle.tarB. 安装和删除包
安装 perl-Data-Dumper 并删除与 MySQL Cluster 冲突的 mariadb-libs。
yum -y install perl-Data-Dumper
yum -y remove mariadb-libsC.安装MySQL集群
使用以下 rpm 命令安装 MySQL Cluster 服务器、客户端和共享包:
cd ~
rpm -Uvh MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm
rpm -Uvh MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpmD. 配置 SQL 节点
在 /etc 目录下新建 my.cnf 文件:
vi /etc/my.cnf
并在下面粘贴配置:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.120 # IP address for server management node
default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL
[mysql_cluster]
ndb-connectstring=192.168.1.120 # IP address for server management node保存文件并退出编辑器。
通过启动 MySQL 服务器来启动 SQL 节点:
service mysql start
E. 在 db5 服务器上重做步骤 3.A - 3.D。
请在第二个 SQL 服务器 (db5) 上重做步骤 3.A - 3.D。
第 4 步 - 监控集群
要查看集群状态,我们必须登录到管理节点 db1。
ssh
我们可以使用 ndb_mgm 命令查看集群状态:
ndb_mgm
ndb_mgm> show另一个有用的命令是:
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"第 5 步 - 测试集群
要在我们的新 MySQL 集群上执行测试,我们必须登录到 SQL 节点 db4 或 db5 服务器。
登录到 db4 服务器:
ssh
更改存储在根目录下的“.mysql_secret”文件中的默认 MySQL 密码:
cd ~
cat .mysql_secret这是我的样本:
# The random password set for the root user at Tue Mar 22 19:44:07 2016 (local time): qna3AwbJMuOnw23T
现在使用以下命令更改密码:
mysql_secure_installation
输入你的旧 mysql 密码,然后输入新密码,按回车键确认所有。
如果全部完成,您可以使用密码登录 MySQL shell:
mysql -u root -p
登录后,使用主机“@\”创建一个新的 root 用户,这样我们就可以从外部访问 MySQL。
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
将 aqwe123 替换为您自己的安全密码!现在您可以在 MySQL 用户列表中看到主机为 \@\ 的新 root 用户:
select user, host, password from mysql.user;
并授予新的 root 用户从远程节点读取和写入的权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;
现在尝试从 db4 服务器创建一个新数据库,您也会在 db5 上看到该数据库。
这只是测试集群数据复制的示例结果。
已在具有 5 个服务器节点的 CentOS 7 上成功设置 MySQL 集群。
结论
MySQL Cluster 是一种为 MySQL 数据库提供高可用性和冗余性的技术。它使用 NDB 或 NDBCLUSTER 作为存储引擎,并为 MySQL 数据库提供无共享集群和自动分片。要实现集群,我们需要 3 个组件:管理节点 (MGM)、数据节点 (NDB) 和 SQL 节点 (API)。每个节点必须有自己的内存和磁盘。不建议使用 NFS 等网络存储。要在 CentOS 7 最小系统上安装 MySQL Cluster,我们必须删除 mariadb-libs 包,mariadb-libs 与 MySQL-Cluster-server 冲突,你必须安装 perl-Data-Dumper 包,它是 MySQL-Cluster 所需要的-服务器。 MySQL 集群很容易在多个 CentOS 服务器上安装和配置。