MySQL Cluster旨在提供具备高可用性和低延迟的MySQL兼容数据库。 MySQL Cluster技术经过NDB(网络数据库)和NDBCLUSTER存储引擎实现,并为MySQL数据库系统提供无共享群集和自动分片。 在无共享架构中,每一个节点都有本身的内存和磁盘,不建议和支持使用NFS,SAN等共享存储。node
要实现MySQL Cluster,咱们必须安装三种类型的节点。 每一个节点类型将安装在它本身的服务器上。mysql
1.管理节点 - NDB_MGMD / MGMlinux
群集管理服务器用于管理群集的其余节点。 咱们能够从管理节点建立和配置群集上的新节点,从新启动,删除或备份节点。sql
2.数据节点 - NDBD / NDB数据库
这是在节点之间进行同步和数据复制的过程的层。服务器
3. SQL节点 - MySQLD / API网络
应用程序用于链接到数据库集群的接口服务器。架构
在本教程中,我将指导您完成使用centOS 7安装和配置MySQL群集。咱们将配置管理节点,两个数据节点和两个SQL节点。dom
操做系统是CentOS 7 - 64位。ssh
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服务器。
我将使用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
使用如下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
为配置文件建立新目录。 我将使用“/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
咱们将使用2个CentOS服务器做为数据节点。
db2 = 192.168.1.111
db3 = 192.168.1.109
使用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
如今咱们能够使用这些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节点使用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
如今咱们能够使用这些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
确保没有错误。
在/ 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上就能够直接看到这些数据了,反过来操做也是同样。