1. 程式人生 > >如何在CentOS 7上安裝和配置MySQL Cluster

如何在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
# RedHat/Fedora等配置IP,注意您的網絡卡介面名不一定叫 enp0s3
$ sudo vim /etc/sysconfig/network-script/ifcfg-enp0s3
[email protected]
:~ TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPADDR=192.168.1.200 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8 DNS2=114.114.114.114 IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp0s3 UUID=1a9d5bc7-e303-4164-b75c-ed9bc0da090b DEVICE=enp0s3 ONBOOT=yes ZONE=public ~ # 配置完IP後,需要重啟網路 $ su # systemctl restart network

 

第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 --reload --config-file=/var/lib/mysql-cluster/config.ini

# 如果啟動失敗,加上引數重啟

ndb_mgmd --reload --ndb-mgmd-host=192.168.1.200 --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個伺服器節點。

 

測試結果:

  • 在管理節點輸入 :
ndb_mgm 
show

  • 在Server節點192.168.1.203上建立表Test,另外Server節點192.168.1.204上也立即出現Test,在test中新增資料,另外一個節點上也都有相同資料。

 

結論

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伺服器上安裝和配置。

 

PS: 如果您的管理節點無法同步,其他節點不能正常連線,請把各個節點的selinux關閉,如果仍然無法連線,請繼續把各個節點的firewalld關閉,或者配置firewalld允許mysql叢集服務,配置好各個埠。