翻譯&轉載:https://www.howtoforge.com/tutorial/how-to-install-and-configure-mysql-cluster-on-centos-7/
如何在CentOS 7上安裝和配置MySQL Cluster
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節點。
先決條件
- 操作系統是CentOS 7 - 64位。
- 5臺CentOS服務器或虛擬機。我將使用主機名和IP地址,如下所示:
- 管理節點
db1 = 192.168.1.120 - 數據節點
db2 = 192.168.1.121
db3 = 192.168.1.122 - SQL節點
db4 = 192.168.1.123
db5 = 192.168.1.124
第1步 - 設置管理節點
第一步是使用CentOS 7 db1和IP 192.168.1.120創建“管理節點” 。確保以root用戶身份登錄db1服務器。
A.下載MySQL Cluster軟件
我將使用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
B.安裝和刪除軟件包
在安裝MySQL Cluster的rpm包之前,需要安裝MySQL-Cluster服務器所需的perl-Data-Dumper。 在我們安裝MySQL Cluster之前你需要刪除mariadb-libs。
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C.安裝MySQL Cluster
使用以下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
您可以看到管理節點已啓動:mysql-6.6和ndb-7.4。
第2步 - 設置MySQL羣集數據節點
我們將使用2個CentOS服務器作爲數據節點。
- db2 = 192.168.1.121
- db3 = 192.168.1.122
A.以root用戶身份登錄並下載MySQL Cluster軟件
使用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
B.安裝和刪除軟件包
安裝perl-Data-Dumper並刪除mariadb-libs:
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C.安裝MySQL Cluster
現在我們可以使用這些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.配置數據節點
使用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。
E.重做步驟2.A - 2.D在db3服務器上。
由於我們有2個數據節點,請在我們的第二個數據節點上重做步驟2.A - 2.D。
第3步 - 設置SQL節點
此步驟包含SQL節點的設置,該節點提供對數據庫的應用程序訪問。我們爲SQL節點使用2個CentOS服務器:
- db4 = 192.168.1.123
- db5 = 192.168.1.124
A.登錄並下載MySQL Cluster
以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
B.安裝和刪除軟件包
安裝perl-Data-Dumper並刪除與MySQL Cluster衝突的mariadb-lib。
yum -y install perl-Data-Dumper
yum -y remove mariadb-libs
C.安裝MySQL Cluster
使用以下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.配置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.重做步驟3.A - 3.D在db5服務器上。
請重做第二個SQL服務器(db5)上的步驟3.A - 3.D。
第4步 - 監控羣集
要查看羣集狀態,我們必須登錄管理節點db1。
ssh [email protected]
我們可以使用ndb_mgm命令查看集羣狀態:
ndb_mgm
ndb_mgm> show
另一個有用的命令是:
ndb_mgm -e "all status"
ndb_mgm -e "all report memory"
第5步 - 測試羣集
要對我們的新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個服務器節點。
結論
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服務器上安裝和配置。