Mysql叢集安裝詳細步驟

圖片.png
MySQL叢集是為了提供一個高可用性和低延遲的MySQL相容資料庫而設計的。mysql叢集技術通過ndb(網路資料庫)和ndb cluster儲存引擎實現,為mysql資料庫系統提供無共享叢集和自動分片。在無共享架構中,每個節點都有自己的記憶體和磁碟,不建議和支援使用共享儲存(如NFS、SAN)。
為了實現MySQL叢集,我們必須安裝三種類型的節點。每個節點型別都將安裝在自己的伺服器上。元件包括:
1。管理節點-ndb_mgmd/mgm
叢集管理伺服器用於管理叢集的其他節點。我們可以從管理節點建立和配置叢集上的新節點、重新啟動、刪除或備份節點。
2。資料節點-ndbd/ndb
這是節點之間發生同步和資料複製過程的層。
3。SQL節點-mysqld/api
應用程式用於連線到資料庫群集的介面伺服器。
使用Centos7安裝和配置MySQL叢集。我們將配置管理節點、兩個資料節點和兩個SQL節點
先決條件
1. CentOS 7 - 64bit. 2. CentOS伺服器名稱ip如下 管理節點 Management Node db1 = 192.168.1.120 資料節點 Data Nodes db2 = 192.168.1.121 db3 = 192.168.1.122 Sql節點 SQL Nodes db4 = 192.168.1.123 db5 = 192.168.1.124
步驟1-設定管理節點
第一步是使用CentOS 7 DB1和IP 192.168.1.120建立“管理節點”。確保以根使用者身份登入到DB1伺服器。
a.下載mysql叢集軟體
我將用wget從mysql網站下載。我在這裡使用的是“Red Hat Enterprise Linux 7/Oracle Linux 7(x86,64位),RPM包”,它與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

圖片.png
b.安裝和拆除包裝
在安裝MySQL叢集的RPM包之前,需要安裝MySQL叢集伺服器所需的Perl資料轉儲程式。在安裝mysql叢集之前,您需要刪除mariadb libs。
yum -y install perl-Data-Dumper yum -y remove mariadb-libs
c.安裝mysql叢集
使用以下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

圖片.png
步驟2-設定MySQL叢集資料節點
我們將使用2個CentOS伺服器作為資料節點。
DB2=192.168.1.121
DB3=192.168.1.122
a.以root使用者身份登入,下載mysql叢集軟體
使用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資料轉儲程式並刪除mariadb libs:
yum -y install perl-Data-Dumper yum -y remove mariadb-libs
c.安裝mysql叢集
現在,我們可以使用以下rpm命令為資料節點安裝mysql叢集包:
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
現在開始data node/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

圖片.png
資料節點DB2連線到管理節點IP 192.168.1.120。
e.在DB3伺服器上重做步驟2.a-2.d。
由於我們有兩個資料節點,請在第二個資料節點上重做步驟2.a-2.d。
步驟3-設定SQL節點
這是一個步驟,包含為SQL節點提供對資料庫的應用程式訪問的設定。我們為SQL節點使用2個CentOS伺服器:
DB4=192.168.1.123
DB5=192.168.1.124
a.登入下載mysql叢集
ssh [email protected]
下載 MySQL Cluster package:
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資料轉儲程式並刪除與mysql叢集衝突的mariadb libs。
yum -y install perl-Data-Dumper yum -y remove mariadb-libs
c.安裝mysql叢集
使用下面的rpm命令安裝mysql叢集伺服器、客戶端和共享包:
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.在DB5伺服器上重做步驟3.a-3.d。
請在第二個SQL Server(DB5)上重做步驟3.a-3.d。
步驟4-監視群集
要檢視叢集狀態,我們必須登入到管理節點db1。
ssh [email protected]
我們可以使用ndb_mgm命令檢視叢集狀態:
ndb_mgm ndb_mgm> show

圖片.png
其他有用的命令
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
登入後,用主機“@”建立一個新的根使用者,這樣我們就可以從外部訪問MySQL。
CREATE USER 'root'@'%' IDENTIFIED BY 'aqwe123';
用您自己的安全密碼替換AQWE123!現在您可以在mysql使用者列表中看到主機為“@”的新根使用者:
select user, host, password from mysql.user;
並從遠端節點授予新的根使用者讀寫訪問權:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*94CC7BF027327993D738E11...(Encrypted PASSWORD)' WITH GRANT OPTION;

圖片.png
現在嘗試從DB4伺服器建立一個新的資料庫,您也將看到DB5上的資料庫。
這只是測試叢集資料複製的一個示例結果。

圖片.png
MySQL群集已在CentOS 7上成功安裝,有5個伺服器節點。
結論
mysql叢集是一種為mysql資料庫提供高可用性和冗餘的技術。它使用ndb或ndbcluster作為儲存引擎,為MySQL資料庫提供無共享叢集和自動切分。為了實現叢集,我們需要3個元件:管理節點(mgm)、資料節點(ndb)和SQL節點(api)。每個節點都必須有自己的記憶體和磁碟。不建議使用網路儲存,如NFS。要在CentOS 7 Minimal系統上安裝MySQL叢集,我們必須刪除Mariadb libs包,Mariadb libs與MySQL叢集伺服器衝突,必須安裝Perl資料轉儲程式包,這是MySQL叢集伺服器所需要的。MySQL叢集易於在多個CentOS伺服器上安裝和配置。