如何在CentOS 7上安装和配置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
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服务器。
- db2 = 192.168.1.121
- 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
数据节点db2连接到管理节点ip 192.168.1.120。
E.重做第2步.A - 2.D在db3服务器上。
由于我们有2个数据节点,请重做我们第二个数据节点上的第2步.A - 2.D。
第3步 - 安装SQL节点
这是包含提供应用程序访问数据库的SQL节点的设置。 我们为SQL节点使用2个CentOS服务器:
- db4 = 192.168.1.123
- 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_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;
现在尝试从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服务器上轻松安装和配置
https://www.howtoing.com/how-to-install-and-configure-mysql-cluster-on-centos-7/