翻译&转载:https://www.howtoforge.com/tutorial/how-to-install-and-configure-mysql-cluster-on-centos-7/
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节点。
# 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
第一步是使用CentOS 7 db1和IP 192.168.1.120创建“管理节点” 。确保以root用户身份登录db1服务器。
我将使用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
在安装MySQL Cluster的rpm包之前,需要安装MySQL-Cluster服务器所需的perl-Data-Dumper。 在我们安装MySQL Cluster之前你需要删除mariadb-libs。
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
使用以下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
确保没有错误。
为配置文件创建新目录。我将使用“/ 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
保存文件并退出。
接下来使用以下命令启动管理节点:
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
您可以看到管理节点已启动:mysql-6.6和ndb-7.4。
我们将使用2个CentOS服务器作为数据节点。
使用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
安装perl-Data-Dumper并删除mariadb-libs:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
现在我们可以使用这些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
确保没有错误。
使用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。
由于我们有2个数据节点,请在我们的第二个数据节点上重做步骤2.A - 2.D。
此步骤包含SQL节点的设置,该节点提供对数据库的应用程序访问。我们为SQL节点使用2个CentOS服务器:
以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
安装perl-Data-Dumper并删除与MySQL Cluster冲突的mariadb-lib。
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
使用以下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
在/ 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
请重做第二个SQL服务器(db5)上的步骤3.A - 3.D。
要查看群集状态,我们必须登录管理节点db1。
ssh [email protected]
我们可以使用ndb_mgm命令查看集群状态:
ndb_mgm
ndb_mgm> show
另一个有用的命令是:
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"
要对我们的新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;
现在尝试从db4服务器创建一个新数据库,您也将在db5上看到该数据库。
这只是测试群集数据复制的示例结果。
MySQL Cluster已在CentOS 7上成功安装,具有5个服务器节点。
ndb_mgm
show
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集群服务,配置好各个端口。