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上就能夠直接看到這些數據了,反過來操做也是同樣。