MySQL集群是为了提供一个高可用性和低延迟的MySQL兼容数据库而设计的。mysql集群技术通过ndb(网络数据库)和ndb cluster存储引擎实现,为mysql数据库系统提供无共享集群和自动分片。在无共享架构中,每个节点都有自己的内存和磁盘,不建议和支持使用共享存储(如NFS、SAN)。
为了实现MySQL集群,我们必须安装三种类型的节点。每个节点类型都将安装在自己的服务器上。组件包括:
1。管理节点-ndb_mgmd/mgm
集群管理服务器用于管理集群的其他节点。我们可以从管理节点创建和配置集群上的新节点、重新启动、删除或备份节点。
2。数据节点-ndbd/ndb
这是节点之间发生同步和数据复制过程的层。
3。SQL节点-mysqld/api
应用程序用于连接到数据库群集的接口服务器。
使用Centos7安装和配置MySQL集群。我们将配置管理节点、两个数据节点和两个SQL节点
先决条件
1. CentOS 7 - 64bit.
2. CentOS服务器名称ip如下
管理节点 Management Node
db1 = 192.168.1.120
数据节点 Data Nodes
db2 = 192.168.1.121
db3 = 192.168.1.122
Sql节点 SQL Nodes
db4 = 192.168.1.123
db5 = 192.168.1.124
步骤1-设置管理节点
第一步是使用CentOS 7 DB1和IP 192.168.1.120创建“管理节点”。确保以根用户身份登录到DB1服务器。
a.下载mysql集群软件
我将用wget从mysql网站下载。我在这里使用的是“Red Hat Enterprise Linux 7/Oracle Linux 7(x86,64位),RPM包”,它与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
图片.png
b.安装和拆除包装
在安装MySQL集群的RPM包之前,需要安装MySQL集群服务器所需的Perl数据转储程序。在安装mysql集群之前,您需要删除mariadb libs。
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
c.安装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
图片.png
步骤2-设置MySQL集群数据节点
我们将使用2个CentOS服务器作为数据节点。
DB2=192.168.1.121
DB3=192.168.1.122
a.以root用户身份登录,下载mysql集群软件
使用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数据转储程序并删除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
现在开始data node/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
图片.png
数据节点DB2连接到管理节点IP 192.168.1.120。
e.在DB3服务器上重做步骤2.a-2.d。
由于我们有两个数据节点,请在第二个数据节点上重做步骤2.a-2.d。
步骤3-设置SQL节点
这是一个步骤,包含为SQL节点提供对数据库的应用程序访问的设置。我们为SQL节点使用2个CentOS服务器:
DB4=192.168.1.123
DB5=192.168.1.124
a.登录下载mysql集群
ssh root@192.168.1.123
下载 MySQL Cluster package:
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数据转储程序并删除与mysql集群冲突的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.配置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 Server(DB5)上重做步骤3.a-3.d。
步骤4-监视群集
要查看集群状态,我们必须登录到管理节点db1。
ssh root@192.168.1.120
我们可以使用ndb_mgm命令查看集群状态:
ndb_mgm
ndb_mgm> show
图片.png
其他有用的命令
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"
步骤5-测试群集
要在新的MySQL集群上执行测试,我们必须登录到SQL节点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密码,然后键入新密码,按Enter确认所有密码。
如果全部完成,您可以用密码登录mysql shell:
mysql -u root -p
登录后,用主机“@”创建一个新的根用户,这样我们就可以从外部访问MySQL。
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
用您自己的安全密码替换AQWE123!现在您可以在mysql用户列表中看到主机为“@”的新根用户:
select user, host, password from mysql.user;
并从远程节点授予新的根用户读写访问权:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;
图片.png
现在尝试从DB4服务器创建一个新的数据库,您也将看到DB5上的数据库。
这只是测试集群数据复制的一个示例结果。
图片.pngMySQL群集已在CentOS 7上成功安装,有5个服务器节点。
结论
mysql集群是一种为mysql数据库提供高可用性和冗余的技术。它使用ndb或ndbcluster作为存储引擎,为MySQL数据库提供无共享集群和自动切分。为了实现集群,我们需要3个组件:管理节点(mgm)、数据节点(ndb)和SQL节点(api)。每个节点都必须有自己的内存和磁盘。不建议使用网络存储,如NFS。要在CentOS 7 Minimal系统上安装MySQL集群,我们必须删除Mariadb libs包,Mariadb libs与MySQL集群服务器冲突,必须安装Perl数据转储程序包,这是MySQL集群服务器所需要的。MySQL集群易于在多个CentOS服务器上安装和配置。
网友评论