如何在CentOS 7上安装和配置MySQL集群

MySQL集群旨在提供具有高可用性和低延迟的MySQL兼容数据库。 MySQL集群技术实现

MySQL集群被设计为提供具有高可用性和低延迟的MySQL兼容数据库。 MySQL集群技术通过NDB(Network DataBase)和NDBCLUSTER存储引擎实现,为MySQL数据库系统提供无共享的集群和自动分片。 在无共享架构中,每个节点都有自己的内存和磁盘,不推荐和支持使用NFS,SAN等共享存储。

要实现MySQL群集,我们必须安装三种类型的节点。 每个节点类型将安装在它自己的服务器上。 组件是:

管理节点 - NDB_MGMD / MGM
集群管理服务器用于管理集群的其他节点。 我们可以从管理节点创建和配置新节点,重新启动,删除或备份集群上的节点。

2. 数据节点 - NDBD / NDB
这是节点之间的同步和数据复制过程的层。

3. SQL节点 - MySQLD / API
应用程序用于连接到数据库集群的接口服务器。

在本教程中,我将指导您使用centos 7安装和配置MySQL集群。我们将配置管理节点,两个数据节点和两个SQL节点。

先决条件

  • 操作系统是CentOS 7 - 64bit。
  • 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集群软件

我将使用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.tar

安装MySQL群集包rpm。

B.安装和删除软件包

在为MySQL Cluster安装rpm包之前,需要安装MySQL-Cluster服务器所需的perl-Data-Dumper 。 您需要删除mariadb-libs才能安装MySQL Cluster。

yum -y install perl-Data-Dumper
yum -y remove mariadb-libs

C.安装MySQL群集

使用这些rpm命令安装MySQL群集包:

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服务器。

  1. db2 = 192.168.1.121
  2. db3 = 192.168.1.122

A.以root用户身份登录,下载MySQL Cluster软件

使用ssh登录到db2服务器:

ssh root@192.168.1.121

然后下载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.tar

B.安装和删除软件包

安装perl-Data-Dumper并删除mariadb-libs:

yum -y install perl-Data-Dumper
yum -y remove mariadb-libs

C.安装MySQL群集

现在我们可以使用这些rpm命令为数据节点安装MySQL群集包:

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

MySQL集群节点在线。

数据节点db2连接到管理节点ip 192.168.1.120。

E.重做第2步.A - 2.D在db3服务器上。

由于我们有2个数据节点,请重做我们第二个数据节点上的第2步.A - 2.D。

第3步 - 安装SQL节点

这是包含提供应用程序访问数据库的SQL节点的设置。 我们为SQL节点使用2个CentOS服务器:

  1. db4 = 192.168.1.123
  2. db5 = 192.168.1.124

A.登录并下载MySQL群集

以root用户身份登录到db4服务器:

ssh root@192.168.1.123

并下载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.tar

B.安装和删除软件包

安装perl-Data-Dumper并删除与MySQL Cluster冲突的mariadb-lib。

yum -y install perl-Data-Dumper
yum -y remove mariadb-libs

C.安装MySQL群集

使用以下rpm命令安装MySQL群集服务器,客户端和共享包:

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.配置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.重做第3步.A - 3.D在db5服务器上。

请重做第二个SQL Server(db5)上的第3步.A - 3.D。

第4步 - 监视群集

要查看群集状态,我们必须登录到管理节点db1。

ssh root@192.168.1.120

我们可以使用ndb_mgm命令查看集群状态:

ndb_mgm
ndb_mgm> show

检查NDB clsuter状态。

另一个有用的命令是:

ndb_mgm -e "all status"
ndb_mgm -e "all report memory"

第5步 - 测试集群

要对我们的新MySQL集群进行测试,我们必须登录到SQL Nodes db4或db5服务器。

登录到db4服务器:

ssh root@192.168.1.123

更改存储在根目录“ .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;

授予priveliges。

现在尝试从db4服务器创建一个新的数据库,你也将在db5上看到数据库。

这只是测试集群数据复制的示例结果。

所有节点都在线。

已经在具有5个服务器节点的CentOS 7上成功安装了MySQL集群。

结论

MySQL集群是为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服务器上轻松安装和配置。