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

翻译&转载:https://www.howtoforge.com/tutorial/how-to-install-and-configure-mysql-cluster-on-centos-7/

 

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

 

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

 

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

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

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

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

在本教程中,我将指导您通过centOS 7安装和配置MySQL Cluster。我们将配置管理节点,两个数据节点和两个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
# RedHat/Fedora等配置IP,注意您的网卡接口名不一定叫 enp0s3
$ sudo vim /etc/sysconfig/network-script/ifcfg-enp0s3
miazzy@fedora-community:~
TYPE=Ethernet                                                                                                                              
PROXY_METHOD=none                                                                                                                          
BROWSER_ONLY=no                                                                                                                            
BOOTPROTO=static                                                                                                                           
DEFROUTE=yes                                                                                                                               
IPADDR=192.168.1.200                                                                                                                       
NETMASK=255.255.255.0                                                                                                                      
GATEWAY=192.168.1.1                                                                                                                        
DNS1=8.8.8.8                                                                                                                               
DNS2=114.114.114.114                                                                                                                       
IPV4_FAILURE_FATAL=no                                                                                                                      
IPV6INIT=yes                                                                                                                               
IPV6_AUTOCONF=yes                                                                                                                          
IPV6_DEFROUTE=yes                                                                                                                          
IPV6_FAILURE_FATAL=no                                                                                                                      
IPV6_ADDR_GEN_MODE=stable-privacy                                                                                                          
NAME=enp0s3                                                                                                                                
UUID=1a9d5bc7-e303-4164-b75c-ed9bc0da090b                                                                                                  
DEVICE=enp0s3                                                                                                                              
ONBOOT=yes                                                                                                                                 
ZONE=public                                                                                                                                
~                  

# 配置完IP后,需要重启网络
$ su 
# systemctl restart network

 

第1步 - 设置管理节点

第一步是使用CentOS 7 db1和IP 192.168.1.120创建“管理节点” 。确保以root用户身份登录db1服务器。

 

A.下载MySQL Cluster软件

我将使用wget从MySQL站点下载它。我在这里使用的是“Red Hat Enterprise Linux 7 / Oracle Linux 7(x86,64位),RPM Bundle”,它与CentOS 7兼容。然后解压缩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

如何在CentOS 7上安装和配置MySQL Cluster_第1张图片

 

B.安装和删除软件包

在安装MySQL Cluster的rpm包之前,需要安装MySQL-Cluster服务器所需的perl-Data-Dumper。 在我们安装MySQL Cluster之前你需要删除mariadb-libs

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

 

C.安装MySQL Cluster

使用以下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 --reload --config-file=/var/lib/mysql-cluster/config.ini

# 如果启动失败,加上参数重启

ndb_mgmd --reload --ndb-mgmd-host=192.168.1.200 --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

如何在CentOS 7上安装和配置MySQL Cluster_第2张图片

您可以看到管理节点已启动: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 [email protected]

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

现在我们可以使用这些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.重做步骤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 Cluster

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

ssh [email protected]

并下载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 Cluster

使用以下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.配置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服务器(db5)上的步骤3.A - 3.D。

 

第4步 - 监控群集

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

ssh [email protected]

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

ndb_mgm
ndb_mgm> show

如何在CentOS 7上安装和配置MySQL Cluster_第3张图片

另一个有用的命令是:

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

 

第5步 - 测试群集

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

登录db4服务器:

ssh [email protected]

更改存储在根目录中“ .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密码,然后键入新密码,按Enter确认全部。

如果全部完成,您可以使用密码登录MySQL shell:

mysql -u root -p

登录后,创建一个主机为“ @ ” 的新root用户,这样我们就可以从外部访问MySQL。

CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';

用您自己的安全密码替换aqwe123! 现在,您可以在MySQL用户列表中看到主机为“@”的新root用户:

CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';

并授予新的root用户对远程节点的读写访问权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;

如何在CentOS 7上安装和配置MySQL Cluster_第4张图片

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

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

如何在CentOS 7上安装和配置MySQL Cluster_第5张图片

MySQL Cluster已在CentOS 7上成功安装,具有5个服务器节点。

 

测试结果:

  • 在管理节点输入 :
ndb_mgm 
show

如何在CentOS 7上安装和配置MySQL Cluster_第6张图片

  • 在Server节点192.168.1.203上创建表Test,另外Server节点192.168.1.204上也立即出现Test,在test中添加数据,另外一个节点上也都有相同数据。

如何在CentOS 7上安装和配置MySQL Cluster_第7张图片

如何在CentOS 7上安装和配置MySQL Cluster_第8张图片

如何在CentOS 7上安装和配置MySQL Cluster_第9张图片

 

结论

MySQL Cluster是一种为MySQL数据库提供高可用性和冗余的技术。它使用NDB或NDBCLUSTER作为存储引擎,并为MySQL数据库提供无共享群集和自动分片。要实现集群,我们需要3个组件:管理节点(MGM),数据节点(NDB)和SQL节点(API)。每个节点都必须有自己的内存和磁盘。建议不要使用NFS等网络存储。要在CentOS 7 minimal系统上安装MySQL Cluster,我们必须删除mariadb-libs包,mariadb-libs与MySQL-Cluster-server冲突,你必须安装perl-Data-Dumper包,MySQL-Cluster需要它-服务器。MySQL Cluster易于在多个CentOS服务器上安装和配置。

 

PS: 如果您的管理节点无法同步,其他节点不能正常连接,请把各个节点的selinux关闭,如果仍然无法连接,请继续把各个节点的firewalld关闭,或者配置firewalld允许mysql集群服务,配置好各个端口。

 

你可能感兴趣的:(MySQL集群)