如何在CentOS 7上安裝和配置MySQL Cluster

翻譯&轉載: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服務器作爲數據節點。

  1. db2 = 192.168.1.121
  2. 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服務器:

  1. db4 = 192.168.1.123
  2. 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服務器上安裝和配置。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章