概述
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群集。我们将配置管理节点,两个数据节点和两个SQL节点。
准备
操作系统是CentOS 7 - 64位。
5台CentOS服务器或虚拟机。 我将使用主机名和IP地址,如下所示:
管理节点
db1 = 192.168.1.107
数据节点
db2 = 192.168.1.111
db3 = 192.168.1.109
SQL节点
db4 = 192.168.1.110
db5 = 192.168.1.112
简单起见所有服务直接禁用防火墙
systemctl disable firewalld
systemctl stop firewalld
并且禁用selinux
vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
设置管理节点
第一步是使用CentOS 7 db1和IP 192.168.1. 107创建“管理节点”。 确保以root用户身份登录db1服务器。
下载MySQL Cluster软件
我将使用wget从MySQL站点下载它。 我在这里使用的是“Red Hat Enterprise Linux 7 / Oracle Linux 7(x86,64位),RPM Bundle”,它与CentOS 7兼容。然后解压缩tar文件。
我将使用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
安装MySQL Cluster
使用以下rpm命令安装MySQL Cluster软件包:
cd~
yum localinstall MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm -y
确保没有错误。又可能需要安装net-tools
Yum install net-tools -y
配置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.107
[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]
# db2
HostName=192.168.1.111
[ndbd]
# db3
HostName=192.168.1.109
[mysqld]
#SQL Node db4
HostName=192.168.1.115
[mysqld]
#SQL Node db5
HostName=192.168.1.112
保存文件并退出。
启动管理节点
接下来使用以下命令启动管理节点:
ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini
结果应该类似于:
MySQL Cluster Management Server mysql-5.6.28 ndb-7.4.10
2018-08-16 03:00:47 [MgmtSrvr] INFO -- The default config directory '/usr/mysql-cluster' does not exist. Trying to create it...
2018-08-16 03:00:47 [MgmtSrvr] INFO -- Sucessfully created config directory
管理节点已启动,现在您可以使用命令“ndb_mgm”来监视节点:
ndb_mgm
show
设置MySQL群集数据节点
我们将使用2个CentOS服务器作为数据节点。
db2 = 192.168.1.111
db3 = 192.168.1.109
以root用户身份登录并下载MySQL Cluster软件
使用ssh登录到db2服务器:
然后下载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
.安装MySQL Cluster
现在我们可以使用这些rpm命令为数据节点安装MySQL Cluster包:
cd~
yum localinstall MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm -y
确保没有错误。
配置数据节点
使用vi编辑器在/ etc目录中创建一个新配置文件:
vi /etc/my.cnf
粘贴配置如下:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.107 # IP address of Management Node
[mysql_cluster]
ndb-connectstring=192.168.1.107 # IP address of Management Node
保存文件并退出。
然后为我们在管理节点配置文件“config.ini”中定义的数据库数据创建新目录。
mkdir -p /var/lib/mysql-cluster
现在启动数据节点/ ndbd:
ndbd
DB3如法炮制
操作完回管理节点确认一下
设置SQL节点
此步骤包含SQL节点的设置,该节点提供对数据库的应用程序访问。 我们为SQL节点使用2个CentOS服务器:
db4 = 192.168.1.115
db5 = 192.168.1.112
然后下载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
.安装MySQL Cluster
现在我们可以使用这些rpm命令为数据节点安装MySQL Cluster包:
cd~
yum localinstall MySQL-Cluster-client-gpl-7.4.10-1.el7.x86_64.rpm MySQL-Cluster-server-gpl-7.4.10-1.el7.x86_64.rpm MySQL-Cluster-shared-gpl-7.4.10-1.el7.x86_64.rpm -y
确保没有错误。
配置SQL节点
在/ etc目录中创建一个新的my.cnf文件:
vi /etc/my.cnf
并在下面粘贴配置:
[mysqld]
ndbcluster
ndb-connectstring=192.168.1.107 # IP address for server management node
default_storage_engine=ndbcluster # Define default Storage Engine used by MySQL
[mysql_cluster]
ndb-connectstring=192.168.1.107 # IP address for server management node
保存文件并退出编辑器。这里简单粗暴直接跳过验证。
通过启动MySQL服务器启动SQL节点:
重新初始化数据库
cat .mysql_secret
# The random password set for the root user at Thu Aug 16 20:48:32 2018 (local time): 9ybWrUm68Vx00JY6
最后的数字就是root的密码
mysql_secure_installation 命令按照提示初始化数据库
如果是偷懒的同学可以直接mysqld中加入skip-grant-tables直接跳过用户验证
service mysql start
验证
在所有节点上操作完成之后,可以使用
ndb_mgm -e show 来检查
所有的节点都连接完毕
这个时候连接到
192.168.1.112数据库创建数据,创建表,添加数据。
在192.168.1.115上就可以直接看到这些数据了,反过来操作也是一样。