MySQL CLUSTER(叢集)系列
轉自:http://www.cublog.cn/u/27852/showart_269584.html
MySQL CLUSTER(叢集)系列 (1.雙機實現高可用)
一、介紹
這篇文件旨在介紹如何安裝配置基於2臺伺服器的MySQL叢集。並且實現任意一臺伺服器出現問題或當機時MySql叢集依然能夠繼續執行。加下後續的(keepalived+lvs+mysql cluster文件),可以實現Mysql雙機的高可用及負載均衡。
安裝環境及軟體包:
vmware workstation 5.5.3
mysql-5.2.3-falcon-alpha.tar.gz
gentoo 2006.1
Server1: 192.168.1.111
Server2: 192.168.1.110
二、在Server1和Server2上安裝MySQL
以下步驟需要在Server1和Server2上各做一次
# mv mysql-5.2.3-falcon-alpha.tar.gz /tmp/package
# cd /tmp/package
# groupadd mysql
# useradd -g mysql mysql
# tar -zxvf mysql-5.2.3-falcon-alpha.tar.gz
# rm -f mysql-5.2.3-falcon-alpha.tar.gz
# mv mysql-5.2.3-falcon-alpha mysql
# cd mysql
# ./configure --prefix=/usr --with-extra-charsets=complex --with-plugin-ndbcluster --with-plugin-partition --with-plugin-innobase
# make && make install
#ln -s /usr/libexec/ndbd /usr/bin
#ln -s /usr/libexec/ndb_mgmd /usr/bin
#ln -s /usr/libexec/ndb_cpcd /usr/bin
#ln -s /usr/libexec/mysqld /usr/bin
#ln -s /usr/libexec/mysqlmanager /usr/bin
#mysql_install_db --user=mysql
三、安裝並配置節點
以下步驟需要在Server1和Server2上各做一次
1.配置管理節點配置檔案:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini
在config.ini中新增如下內容:
[ndbd default]
NoOfReplicas= 2
MaxNoOfConcurrentOperations= 10000
DataMemory= 80M
IndexMemory= 24M
TimeBetweenWatchDogCheck= 30000
DataDir= /var/lib/mysql-cluster
MaxNoOfOrderedIndexes= 512
[ndb_mgmd default]
DataDir= /var/lib/mysql-cluster
[ndb_mgmd]
Id=1
HostName= 192.168.1.111
[ndb_mgmd]
Id=2
HostName= 192.168.1.110
[ndbd]
Id= 3
HostName= 192.168.1.111
[ndbd]
Id= 4
HostName= 192.168.1.110
[mysqld]
[mysqld]
[tcp default]
PortNumber= 63132
2.配置通用my.cnf檔案,mysqld及ndbd,ndb_mgmd均使用此檔案.
# vi /etc/my.cnf
在my.cnf中新增如下內容:
[mysqld]
default-storage-engine=ndbcluster 避免在sql語句中還要加入ENGINE=NDBCLUSTER。
ndbcluster
ndb-connectstring=192.168.1.111,192.168.1.110
[ndbd]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgm]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
[mysql_cluster]
ndb-connectstring= 192.168.1.111,192.168.1.110
儲存退出後,啟動管理節點Server1為:
# ndb_mgmd --ndb_nodeid=1
啟動管理節點Server2為:
# ndb_mgmd --ndb_nodeid=2
注:在啟動時有一個警告提示
Cluster configuration warning:
arbitrator with id 1 and db node with id 3 on same host 192.168.1.111
arbitrator with id 2 and db node with id 4 on same host 192.168.1.110
Running arbitrator on the same host as a database node may
cause complete cluster shutdown in case of host failure.
說節點1和3,2和4的arbitrator一樣,可能引起整個叢集失敗。(可以不用放在心上)
四、初始化叢集
在Server1中
# ndbd --nodeid=3 --initial
在Server2中
# ndbd --nodeid=4 --iniitial
注:只有在第一次啟動ndbd時或者對config.ini進行改動後才需要使用--initial引數!
五、檢查工作狀態
在任意一臺機子上啟動管理終端:
# ndb_mgm
鍵入show命令檢視當前工作狀態:(下面是一個狀態輸出示例)
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.1.111:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3 @192.168.1.111 (Version: 5.2.3, Nodegroup: 0, Master)
id=4 @192.168.1.110 (Version: 5.2.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.1.111 (Version: 5.2.3)
id=2 @192.168.1.110 (Version: 5.2.3)
[mysqld(API)] 2 node(s)
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)
ndb_mgm>
如果上面沒有問題,現在開始加入mysqld(API):
注意,這篇文件對於MySQL並沒有設定root密碼,推薦你自己設定Server1和Server2的MySQL root密碼。
在Server1 中:
#mysqld_safe --ndb_nodeid=5 --user=mysql &
在Server2 中:
#mysqld_safe --ndb_nodeid=6 --user=mysql &
# ndb_mgm -e show
資訊如下:
Connected to Management Server at: 192.168.1.111:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3 @192.168.1.111 (Version: 5.2.3, Nodegroup: 0, Master)
id=4 @192.168.1.110 (Version: 5.2.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.1.111 (Version: 5.2.3)
id=2 @192.168.1.110 (Version: 5.2.3)
[mysqld(API)] 4 node(s)
id=5 @192.168.1.111 (Version: 5.2.3)
id=6 @192.168.1.110 (Version: 5.2.3)
ok,可以測試了:
在Server1 中
# /usr/local/mysql/bin/mysql -u root -p
>create database aa;
> use aa;
> CREATE TABLE ctest (i INT) ;
> INSERT INTO ctest () VALUES (1);
> SELECT * FROM ctest;
應該可以看到1 row returned資訊(返回數值1)。
如果上述正常,則換到Server2,觀察效果。如果成功,則在Server2中執行INSERT再換回到Server1觀察是否工作正常。
如果都沒有問題,那麼恭喜成功!
六、破壞性測試
將Server1或Server2的網線拔掉(即ifconfig eth0 down),觀察另外一臺叢集伺服器工作是否正常(可以使用SELECT查詢測試)。測試完畢後,重新插入網線即可。
注意:在未對叢集做任何讀寫操作前,此測試結果無效,因為,叢集初始後只在/var/lib/mysql-cluster/下建了幾個空目錄,還沒有正常協同工作,會出現整個所有儲存(ndbd)節點關閉.
也可以這樣測試:在Server1或Server2上:
# ps aux | grep ndbd
將會看到所有ndbd程式資訊:
root 5578 0.0 0.3 6220 1964 ? S 03:14 0:00 ndbd
root 5579 0.0 20.4 492072 102828 ? R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd
然後殺掉一個ndbd程式以達到破壞MySQL叢集伺服器的目的:
# kill -9 5578 5579
之後在另一臺叢集伺服器上使用SELECT查詢測試。並且在管理節點伺服器的管理終端中執行show命令會看到被破壞的那臺伺服器的狀態。
測試完成後,只需要重新啟動被破壞伺服器的ndbd程式即可:
# ndbd --ndb_nodeid=此儲存節點的id
注意!前面說過了,此時是不用加--inital引數的!
至此,MySQL雙機叢集就配置完成了!
這篇文件旨在介紹如何安裝配置基於2臺伺服器的MySQL叢集。並且實現任意一臺伺服器出現問題或當機時MySql叢集依然能夠繼續執行。加下後續的(keepalived+lvs+mysql cluster文件),可以實現Mysql雙機的高可用及負載均衡。
安裝環境及軟體包:
vmware workstation 5.5.3
mysql-5.2.3-falcon-alpha.tar.gz
gentoo 2006.1
Server1: 192.168.1.111
Server2: 192.168.1.110
二、在Server1和Server2上安裝MySQL
以下步驟需要在Server1和Server2上各做一次
# mv mysql-5.2.3-falcon-alpha.tar.gz /tmp/package
# cd /tmp/package
# groupadd mysql
# useradd -g mysql mysql
# tar -zxvf mysql-5.2.3-falcon-alpha.tar.gz
# rm -f mysql-5.2.3-falcon-alpha.tar.gz
# mv mysql-5.2.3-falcon-alpha mysql
# cd mysql
# ./configure --prefix=/usr --with-extra-charsets=complex --with-plugin-ndbcluster --with-plugin-partition --with-plugin-innobase
# make && make install
#ln -s /usr/libexec/ndbd /usr/bin
#ln -s /usr/libexec/ndb_mgmd /usr/bin
#ln -s /usr/libexec/ndb_cpcd /usr/bin
#ln -s /usr/libexec/mysqld /usr/bin
#ln -s /usr/libexec/mysqlmanager /usr/bin
#mysql_install_db --user=mysql
三、安裝並配置節點
以下步驟需要在Server1和Server2上各做一次
1.配置管理節點配置檔案:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini
在config.ini中新增如下內容:
[ndbd default]
NoOfReplicas= 2
MaxNoOfConcurrentOperations= 10000
DataMemory= 80M
IndexMemory= 24M
TimeBetweenWatchDogCheck= 30000
DataDir= /var/lib/mysql-cluster
MaxNoOfOrderedIndexes= 512
[ndb_mgmd default]
DataDir= /var/lib/mysql-cluster
[ndb_mgmd]
Id=1
HostName= 192.168.1.111
[ndb_mgmd]
Id=2
HostName= 192.168.1.110
[ndbd]
Id= 3
HostName= 192.168.1.111
[ndbd]
Id= 4
HostName= 192.168.1.110
[mysqld]
[mysqld]
[tcp default]
PortNumber= 63132
2.配置通用my.cnf檔案,mysqld及ndbd,ndb_mgmd均使用此檔案.
# vi /etc/my.cnf
在my.cnf中新增如下內容:
[mysqld]
default-storage-engine=ndbcluster 避免在sql語句中還要加入ENGINE=NDBCLUSTER。
ndbcluster
ndb-connectstring=192.168.1.111,192.168.1.110
[ndbd]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgm]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
[mysql_cluster]
ndb-connectstring= 192.168.1.111,192.168.1.110
儲存退出後,啟動管理節點Server1為:
# ndb_mgmd --ndb_nodeid=1
啟動管理節點Server2為:
# ndb_mgmd --ndb_nodeid=2
注:在啟動時有一個警告提示
Cluster configuration warning:
arbitrator with id 1 and db node with id 3 on same host 192.168.1.111
arbitrator with id 2 and db node with id 4 on same host 192.168.1.110
Running arbitrator on the same host as a database node may
cause complete cluster shutdown in case of host failure.
說節點1和3,2和4的arbitrator一樣,可能引起整個叢集失敗。(可以不用放在心上)
四、初始化叢集
在Server1中
# ndbd --nodeid=3 --initial
在Server2中
# ndbd --nodeid=4 --iniitial
注:只有在第一次啟動ndbd時或者對config.ini進行改動後才需要使用--initial引數!
五、檢查工作狀態
在任意一臺機子上啟動管理終端:
# ndb_mgm
鍵入show命令檢視當前工作狀態:(下面是一個狀態輸出示例)
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.1.111:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3 @192.168.1.111 (Version: 5.2.3, Nodegroup: 0, Master)
id=4 @192.168.1.110 (Version: 5.2.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.1.111 (Version: 5.2.3)
id=2 @192.168.1.110 (Version: 5.2.3)
[mysqld(API)] 2 node(s)
id=5 (not connected, accepting connect from any host)
id=6 (not connected, accepting connect from any host)
ndb_mgm>
如果上面沒有問題,現在開始加入mysqld(API):
注意,這篇文件對於MySQL並沒有設定root密碼,推薦你自己設定Server1和Server2的MySQL root密碼。
在Server1 中:
#mysqld_safe --ndb_nodeid=5 --user=mysql &
在Server2 中:
#mysqld_safe --ndb_nodeid=6 --user=mysql &
# ndb_mgm -e show
資訊如下:
Connected to Management Server at: 192.168.1.111:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=3 @192.168.1.111 (Version: 5.2.3, Nodegroup: 0, Master)
id=4 @192.168.1.110 (Version: 5.2.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.1.111 (Version: 5.2.3)
id=2 @192.168.1.110 (Version: 5.2.3)
[mysqld(API)] 4 node(s)
id=5 @192.168.1.111 (Version: 5.2.3)
id=6 @192.168.1.110 (Version: 5.2.3)
ok,可以測試了:
在Server1 中
# /usr/local/mysql/bin/mysql -u root -p
>create database aa;
> use aa;
> CREATE TABLE ctest (i INT) ;
> INSERT INTO ctest () VALUES (1);
> SELECT * FROM ctest;
應該可以看到1 row returned資訊(返回數值1)。
如果上述正常,則換到Server2,觀察效果。如果成功,則在Server2中執行INSERT再換回到Server1觀察是否工作正常。
如果都沒有問題,那麼恭喜成功!
六、破壞性測試
將Server1或Server2的網線拔掉(即ifconfig eth0 down),觀察另外一臺叢集伺服器工作是否正常(可以使用SELECT查詢測試)。測試完畢後,重新插入網線即可。
注意:在未對叢集做任何讀寫操作前,此測試結果無效,因為,叢集初始後只在/var/lib/mysql-cluster/下建了幾個空目錄,還沒有正常協同工作,會出現整個所有儲存(ndbd)節點關閉.
也可以這樣測試:在Server1或Server2上:
# ps aux | grep ndbd
將會看到所有ndbd程式資訊:
root 5578 0.0 0.3 6220 1964 ? S 03:14 0:00 ndbd
root 5579 0.0 20.4 492072 102828 ? R 03:14 0:04 ndbd
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd
然後殺掉一個ndbd程式以達到破壞MySQL叢集伺服器的目的:
# kill -9 5578 5579
之後在另一臺叢集伺服器上使用SELECT查詢測試。並且在管理節點伺服器的管理終端中執行show命令會看到被破壞的那臺伺服器的狀態。
測試完成後,只需要重新啟動被破壞伺服器的ndbd程式即可:
# ndbd --ndb_nodeid=此儲存節點的id
注意!前面說過了,此時是不用加--inital引數的!
至此,MySQL雙機叢集就配置完成了!
MySQL CLUSTER(叢集)系列 (2.另類線上增加節點-online hotplugin)
MySQL CLUSTER(叢集)系列 (2.另類線上增加節點-online hotplugin)
一、介紹
這篇文件旨在介紹如何設計MySQL叢集,製做叢集模板,有效規避mysql限制。(此文為二管理,四儲存,八資料的模組製作)
安裝環境及軟體包:
vmware workstation 5.5.3
mysql-5.2.3-falcon-alpha.tar.gz
gentoo 2006.1
(每機單網路卡多ip)
Server1: 192.168.1.111 (ndb_mgmd, id=1)
Server1: 192.168.1.112 (ndbd ,id=3)
server1: 192.168.1.113 (ndbd,id=4)
Server2: 192.168.1.110 (ndb_mgmd,id=2)
server2: 192.168.1.109 (ndbd,id=5)
server2: 192.168.1.108 (ndbd,id=6)
二、在Server1和Server2上安裝MySQL
以下步驟需要在Server1和Server2上各做一次
# mv mysql-5.2.3-falcon-alpha.tar.gz /tmp/package
# cd /tmp/package
# groupadd mysql
# useradd -g mysql mysql
# tar -zxvf mysql-5.2.3-falcon-alpha.tar.gz
# rm -f mysql-5.2.3-falcon-alpha.tar.gz
# mv mysql-5.2.3-falcon-alpha mysql
# cd mysql
# ./configure --prefix=/usr --with-extra-charsets=complex --with-plugin-ndbcluster --with-plugin-partition --with-plugin-innobase
# make && make install
#ln -s /usr/libexec/ndbd /usr/bin
#ln -s /usr/libexec/ndb_mgmd /usr/bin
#ln -s /usr/libexec/ndb_cpcd /usr/bin
#ln -s /usr/libexec/mysqld /usr/bin
#ln -s /usr/libexec/mysqlmanager /usr/bin
#mysql_install_db --user=mysql
三、安裝並配置節點
以下步驟需要在Server1和Server2上各做一次
1.配置管理節點配置檔案:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini
在config.ini中新增如下內容:
[ndbd default]
NoOfReplicas= 4 (此文有四個儲存節點)
MaxNoOfConcurrentOperations= 10000
DataMemory= 80M
IndexMemory= 24M
TimeBetweenWatchDogCheck= 30000
DataDir= /var/lib/mysql-cluster
MaxNoOfOrderedIndexes= 512
[ndb_mgmd default]
DataDir= /var/lib/mysql-cluster
[ndb_mgmd]
Id=1
HostName= 192.168.1.111
[ndb_mgmd]
Id=2
HostName= 192.168.1.110
[ndbd]
Id= 3
HostName= 192.168.1.112
[ndbd]
Id= 4
HostName= 192.168.1.113
[ndbd]
Id= 5
HostName= 192.168.1.109
[ndbd]
Id= 6
HostName= 192.168.1.108
[mysqld]
[mysqld]
[mysqld]
[mysqld]
[mysqld]
[mysqld]
[mysqld]
[mysqld] 共八個mysqld定義
[tcp default]
PortNumber= 63132
2.配置通用my.cnf檔案,mysqld及ndbd,ndb_mgmd均使用此檔案.
# vi /etc/my.cnf
在my.cnf中新增如下內容:
[mysqld]
default-storage-engine=ndbcluster 避免在sql語句中還要加入ENGINE=NDBCLUSTER。
ndbcluster
ndb-connectstring=192.168.1.111,192.168.1.110
[ndbd]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgm]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
[mysql_cluster]
ndb-connectstring= 192.168.1.111,192.168.1.110
儲存退出後,啟動管理節點Server1為:
# ndb_mgmd --ndb_nodeid=1
啟動管理節點Server2為:
# ndb_mgmd --ndb_nodeid=2
四、初始化叢集
在Server1中
# ndbd --bind_address=192.168.1.112 --nodeid=3 --initial
#ndbd --bind_address=192.168.1.113--nodeid=4 --initial
在Server2中
#ndbd --bind_address=192.168.1.109 --nodeid=5 --initial
#ndbd --bind_address=192.168.1.108 --nodeid=6 --initial
注:只有在第一次啟動ndbd時或者對config.ini進行改動後才需要使用--initial引數!
五、檢查工作狀態
在任意一臺機子上啟動管理終端:
# ndb_mgm
鍵入show命令檢視當前工作狀態:(下面是一個狀態輸出示例)
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.1.111:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 4 node(s)
id=3 @192.168.1.111 (Version: 5.2.3, Nodegroup: 0, Master)
id=4 @192.168.1.110 (Version: 5.2.3, Nodegroup: 0)
id=5 @192.168.1.109 (Version: 5.2.3, Nodegroup: 0)
id=6 @192.168.1.108 (Version: 5.2.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.1.111 (Version: 5.2.3)
id=2 @192.168.1.110 (Version: 5.2.3)
[mysqld(API)] 8 node(s)
id=7 (not connected, accepting connect from any host)
id=8 (not connected, accepting connect from any host)
id=9 (not connected, accepting connect from any host)
id=10 (not connected, accepting connect from any host)
id=11 (not connected, accepting connect from any host)
id=12 (not connected, accepting connect from any host)
id=13 (not connected, accepting connect from any host)
id=14 (not connected, accepting connect from any host)
ndb_mgm>
如果上面沒有問題,現在開始加入mysqld(API):
注意,這篇文件對於MySQL並沒有設定root密碼,推薦你自己設定Server1和Server2的MySQL root密碼。
在Server1 中:
#mysqld_safe --ndb_nodeid=7 --user=mysql &
在Server2 中:
#mysqld_safe --ndb_nodeid=8 --user=mysql &
# ndb_mgm -e show
資訊如下:
Connected to Management Server at: 192.168.1.111:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 4 node(s)
id=3 @192.168.1.111 (Version: 5.2.3, Nodegroup: 0, Master)
id=4 @192.168.1.110 (Version: 5.2.3, Nodegroup: 0)
id=5 @192.168.1.109 (Version: 5.2.3, Nodegroup: 0)
id=6 @192.168.1.108 (Version: 5.2.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.1.111 (Version: 5.2.3)
id=2 @192.168.1.110 (Version: 5.2.3)
[mysqld(API)] 4 node(s)
id=5 @192.168.1.111 (Version: 5.2.3)
id=6 @192.168.1.110 (Version: 5.2.3)
id=7 (not connected, accepting connect from any host)
id=8 (not connected, accepting connect from any host)
id=9 (not connected, accepting connect from any host)
id=10 (not connected, accepting connect from any host)
id=11 (not connected, accepting connect from any host)
id=12 (not connected, accepting connect from any host)
ok,可以測試了:
在Server1 中
# /usr/local/mysql/bin/mysql -u root -p
>create database aa;
> use aa;
> CREATE TABLE ctest (i INT) ;
> INSERT INTO ctest () VALUES (1);
> SELECT * FROM ctest;
應該可以看到1 row returned資訊(返回數值1)。
如果上述正常,則換到Server2,觀察效果。如果成功,則在Server2中執行INSERT再換回到Server1觀察是否工作正常。
如果都沒有問題,那麼恭喜成功!至此模板製作完成。
注意:在模板製作完成的過程中,測試過程完成了對叢集的初次讀寫,若跳過測試(跳過讀寫),在叢集未協同工作前進行下面的操作,則進行下面的操作毫無意義。因為,叢集初始後只在/var/lib/mysql-cluster/下建了幾個空目錄,還沒有正常協同工作.
六、備份/var/lib/mysql-cluster/下的相應ndb_*_fs,留做以後使用。
七、原理:
ndbd --initial初始叢集結構,在官方文件中增加節點要bakcup後restore要initial的主要是儲存節點,管理節點和資料節點都可用叢集restart實現.
而儲存節點特點是隻要一個有效,則整個叢集可以正常工作,因此,在模板完成後,未使用的儲存節點可以當做故障節點,當啟用時,儲存節點可以通過其內部達到同步.
缺點,在叢集啟動時,每個未使用儲存節點預設等待啟用時間為60秒,造成叢集啟動時間加長,可以能通過設定引數設小,不推薦。
八、 實現:
資料節點不用說了,管理節點兩個也夠用了,主要是儲存節點了。
根據上面的步驟搭建一臺伺服器,拷貝相應的ndb_*_fs到/var/lib/mysql-cluster/下,機器ip符合config.ini中的定義,好了,可以啟用了,簡單吧。
對於現有設計,可以按官方文件增加修改節點的工作時,參考此文件,預留相應的空閒節點,為以後的工作增加便利。
一、介紹
這篇文件旨在介紹如何設計MySQL叢集,製做叢集模板,有效規避mysql限制。(此文為二管理,四儲存,八資料的模組製作)
安裝環境及軟體包:
vmware workstation 5.5.3
mysql-5.2.3-falcon-alpha.tar.gz
gentoo 2006.1
(每機單網路卡多ip)
Server1: 192.168.1.111 (ndb_mgmd, id=1)
Server1: 192.168.1.112 (ndbd ,id=3)
server1: 192.168.1.113 (ndbd,id=4)
Server2: 192.168.1.110 (ndb_mgmd,id=2)
server2: 192.168.1.109 (ndbd,id=5)
server2: 192.168.1.108 (ndbd,id=6)
二、在Server1和Server2上安裝MySQL
以下步驟需要在Server1和Server2上各做一次
# mv mysql-5.2.3-falcon-alpha.tar.gz /tmp/package
# cd /tmp/package
# groupadd mysql
# useradd -g mysql mysql
# tar -zxvf mysql-5.2.3-falcon-alpha.tar.gz
# rm -f mysql-5.2.3-falcon-alpha.tar.gz
# mv mysql-5.2.3-falcon-alpha mysql
# cd mysql
# ./configure --prefix=/usr --with-extra-charsets=complex --with-plugin-ndbcluster --with-plugin-partition --with-plugin-innobase
# make && make install
#ln -s /usr/libexec/ndbd /usr/bin
#ln -s /usr/libexec/ndb_mgmd /usr/bin
#ln -s /usr/libexec/ndb_cpcd /usr/bin
#ln -s /usr/libexec/mysqld /usr/bin
#ln -s /usr/libexec/mysqlmanager /usr/bin
#mysql_install_db --user=mysql
三、安裝並配置節點
以下步驟需要在Server1和Server2上各做一次
1.配置管理節點配置檔案:
# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini
在config.ini中新增如下內容:
[ndbd default]
NoOfReplicas= 4 (此文有四個儲存節點)
MaxNoOfConcurrentOperations= 10000
DataMemory= 80M
IndexMemory= 24M
TimeBetweenWatchDogCheck= 30000
DataDir= /var/lib/mysql-cluster
MaxNoOfOrderedIndexes= 512
[ndb_mgmd default]
DataDir= /var/lib/mysql-cluster
[ndb_mgmd]
Id=1
HostName= 192.168.1.111
[ndb_mgmd]
Id=2
HostName= 192.168.1.110
[ndbd]
Id= 3
HostName= 192.168.1.112
[ndbd]
Id= 4
HostName= 192.168.1.113
[ndbd]
Id= 5
HostName= 192.168.1.109
[ndbd]
Id= 6
HostName= 192.168.1.108
[mysqld]
[mysqld]
[mysqld]
[mysqld]
[mysqld]
[mysqld]
[mysqld]
[mysqld] 共八個mysqld定義
[tcp default]
PortNumber= 63132
2.配置通用my.cnf檔案,mysqld及ndbd,ndb_mgmd均使用此檔案.
# vi /etc/my.cnf
在my.cnf中新增如下內容:
[mysqld]
default-storage-engine=ndbcluster 避免在sql語句中還要加入ENGINE=NDBCLUSTER。
ndbcluster
ndb-connectstring=192.168.1.111,192.168.1.110
[ndbd]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgm]
connect-string=192.168.1.111,192.168.1.110
[ndb_mgmd]
config-file=/var/lib/mysql-cluster/config.ini
[mysql_cluster]
ndb-connectstring= 192.168.1.111,192.168.1.110
儲存退出後,啟動管理節點Server1為:
# ndb_mgmd --ndb_nodeid=1
啟動管理節點Server2為:
# ndb_mgmd --ndb_nodeid=2
四、初始化叢集
在Server1中
# ndbd --bind_address=192.168.1.112 --nodeid=3 --initial
#ndbd --bind_address=192.168.1.113--nodeid=4 --initial
在Server2中
#ndbd --bind_address=192.168.1.109 --nodeid=5 --initial
#ndbd --bind_address=192.168.1.108 --nodeid=6 --initial
注:只有在第一次啟動ndbd時或者對config.ini進行改動後才需要使用--initial引數!
五、檢查工作狀態
在任意一臺機子上啟動管理終端:
# ndb_mgm
鍵入show命令檢視當前工作狀態:(下面是一個狀態輸出示例)
-- NDB Cluster -- Management Client --
ndb_mgm> show
Connected to Management Server at: 192.168.1.111:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 4 node(s)
id=3 @192.168.1.111 (Version: 5.2.3, Nodegroup: 0, Master)
id=4 @192.168.1.110 (Version: 5.2.3, Nodegroup: 0)
id=5 @192.168.1.109 (Version: 5.2.3, Nodegroup: 0)
id=6 @192.168.1.108 (Version: 5.2.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.1.111 (Version: 5.2.3)
id=2 @192.168.1.110 (Version: 5.2.3)
[mysqld(API)] 8 node(s)
id=7 (not connected, accepting connect from any host)
id=8 (not connected, accepting connect from any host)
id=9 (not connected, accepting connect from any host)
id=10 (not connected, accepting connect from any host)
id=11 (not connected, accepting connect from any host)
id=12 (not connected, accepting connect from any host)
id=13 (not connected, accepting connect from any host)
id=14 (not connected, accepting connect from any host)
ndb_mgm>
如果上面沒有問題,現在開始加入mysqld(API):
注意,這篇文件對於MySQL並沒有設定root密碼,推薦你自己設定Server1和Server2的MySQL root密碼。
在Server1 中:
#mysqld_safe --ndb_nodeid=7 --user=mysql &
在Server2 中:
#mysqld_safe --ndb_nodeid=8 --user=mysql &
# ndb_mgm -e show
資訊如下:
Connected to Management Server at: 192.168.1.111:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 4 node(s)
id=3 @192.168.1.111 (Version: 5.2.3, Nodegroup: 0, Master)
id=4 @192.168.1.110 (Version: 5.2.3, Nodegroup: 0)
id=5 @192.168.1.109 (Version: 5.2.3, Nodegroup: 0)
id=6 @192.168.1.108 (Version: 5.2.3, Nodegroup: 0)
[ndb_mgmd(MGM)] 2 node(s)
id=1 @192.168.1.111 (Version: 5.2.3)
id=2 @192.168.1.110 (Version: 5.2.3)
[mysqld(API)] 4 node(s)
id=5 @192.168.1.111 (Version: 5.2.3)
id=6 @192.168.1.110 (Version: 5.2.3)
id=7 (not connected, accepting connect from any host)
id=8 (not connected, accepting connect from any host)
id=9 (not connected, accepting connect from any host)
id=10 (not connected, accepting connect from any host)
id=11 (not connected, accepting connect from any host)
id=12 (not connected, accepting connect from any host)
ok,可以測試了:
在Server1 中
# /usr/local/mysql/bin/mysql -u root -p
>create database aa;
> use aa;
> CREATE TABLE ctest (i INT) ;
> INSERT INTO ctest () VALUES (1);
> SELECT * FROM ctest;
應該可以看到1 row returned資訊(返回數值1)。
如果上述正常,則換到Server2,觀察效果。如果成功,則在Server2中執行INSERT再換回到Server1觀察是否工作正常。
如果都沒有問題,那麼恭喜成功!至此模板製作完成。
注意:在模板製作完成的過程中,測試過程完成了對叢集的初次讀寫,若跳過測試(跳過讀寫),在叢集未協同工作前進行下面的操作,則進行下面的操作毫無意義。因為,叢集初始後只在/var/lib/mysql-cluster/下建了幾個空目錄,還沒有正常協同工作.
六、備份/var/lib/mysql-cluster/下的相應ndb_*_fs,留做以後使用。
七、原理:
ndbd --initial初始叢集結構,在官方文件中增加節點要bakcup後restore要initial的主要是儲存節點,管理節點和資料節點都可用叢集restart實現.
而儲存節點特點是隻要一個有效,則整個叢集可以正常工作,因此,在模板完成後,未使用的儲存節點可以當做故障節點,當啟用時,儲存節點可以通過其內部達到同步.
缺點,在叢集啟動時,每個未使用儲存節點預設等待啟用時間為60秒,造成叢集啟動時間加長,可以能通過設定引數設小,不推薦。
八、 實現:
資料節點不用說了,管理節點兩個也夠用了,主要是儲存節點了。
根據上面的步驟搭建一臺伺服器,拷貝相應的ndb_*_fs到/var/lib/mysql-cluster/下,機器ip符合config.ini中的定義,好了,可以啟用了,簡單吧。
對於現有設計,可以按官方文件增加修改節點的工作時,參考此文件,預留相應的空閒節點,為以後的工作增加便利。
MySQL CLUSTER(叢集)系列 (3.lvs+keeplived+mysql cluster)
一、介紹
這篇文件旨在介紹如何結合lvs+keepalived實現mysql cluster的高可用及負載均衡。此文是在1文(雙機高可用)基礎上增加lvs+keepalived,稍加修改就可適合更多結點的叢集.
安裝環境及軟體包:
vmware workstation 5.5.3
mysql-5.2.3-falcon-alpha.tar.gz
gentoo 2006.1
ipvsadm-1.24.tar.gz
keepalived-1.1.13.tar.gz
linux-2.6.20.3.tar.bz2
iproute2-2.6.15-060110.tar.gz
Server1: 192.168.1.111 (ndb_mgmd, id=1)
Server2: 192.168.1.110 (ndb_mgmd,id=2)
二~六步參見1文(雙機高可用)
以下步驟需要在Server1和Server2上各做一次
七、核心linux-2.6.20.3.tar.bz2安裝
# tar xvjf linux-2.6.20.3.tar.bz2 -C /usr/src
#cd /usr/src/linux-2.6.20.3
#zcat /proc/config.gz .config
#make menuconfig
選擇
這篇文件旨在介紹如何結合lvs+keepalived實現mysql cluster的高可用及負載均衡。此文是在1文(雙機高可用)基礎上增加lvs+keepalived,稍加修改就可適合更多結點的叢集.
安裝環境及軟體包:
vmware workstation 5.5.3
mysql-5.2.3-falcon-alpha.tar.gz
gentoo 2006.1
ipvsadm-1.24.tar.gz
keepalived-1.1.13.tar.gz
linux-2.6.20.3.tar.bz2
iproute2-2.6.15-060110.tar.gz
Server1: 192.168.1.111 (ndb_mgmd, id=1)
Server2: 192.168.1.110 (ndb_mgmd,id=2)
二~六步參見1文(雙機高可用)
以下步驟需要在Server1和Server2上各做一次
七、核心linux-2.6.20.3.tar.bz2安裝
# tar xvjf linux-2.6.20.3.tar.bz2 -C /usr/src
#cd /usr/src/linux-2.6.20.3
#zcat /proc/config.gz .config
#make menuconfig
選擇
· Network packet filtering framework (Netfilter) ---> 後在
[ ] TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL) 下出現
IP: Virtual Server Configuration --->
關天netfilter內的配置及Virtual Server的配置根據自己的需要選擇。
選擇
[ ] TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL) 下出現
IP: Virtual Server Configuration --->
關天netfilter內的配置及Virtual Server的配置根據自己的需要選擇。
選擇
· IP: advanced router
Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure) (FIB_HASH) --->
Choose IP: FIB lookup algorithm (choose FIB_HASH if unsure) (FIB_HASH) --->
· IP: policy routing
# make all && make modules_install && make install
#vi /boot/grub.conf 加入
title=2.6.20.3
kernel /vmlinuz-2.6.20.3 root=/你的根裝置
#reboot (以新核心啟動系統)
八、安裝ipvsadm和keepalived
#tar -zxvf ipvsadm-1.24.tar.gz -C /tmp/package
# cd /tmp/package/ipvsadm-1.24
# make && make install
#tar -zxvf keepalived-1.1.13.tar.gz -C /tmp/package
#cd /tmp/package/keepalived-1.1.13
#vi keepalived/vrrp/vrrp_arp.c
將 26 #include
27
28 /* local includes */
29 #include "vrrp_arp.h"
30 #include "memory.h"
31 #include "utils.h"
修改為
26 /* local includes */
27 #include "vrrp_arp.h"
28 #include "memory.h"
29 #include "utils.h"
30#include
31
就是將#include這行移到下面.
#./configure --prefix=/usr --with-kernel-dir=/usr/src/linux-2.6.20.3
#make && make install
#vi /etc/init.d/keepalived 加入以下內容
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-cluster/keepalived/files/init-keepalived,v 1.3 2004/07/15 00:55:17 agriffis Exp $
depend() {
use logger
need net
}
checkconfig() {
if [ ! -e /etc/keepalived/keepalived.conf ] ; then
eerror "You need an /etc/keepalived/keepalived.conf file to run keepalived"
return 1
fi
}
start() {
checkconfig || return 1
ebegin "Starting Keepalived"
start-stop-daemon --start --quiet --pidfile /var/run/keepalived.pid \
--startas /usr/sbin/keepalived
eend $?
}
stop() {
ebegin "Stopping Keepalived"
start-stop-daemon --stop --quiet --pidfile /var/run/keepalived.pid
eend $?
}
此為gentoo的keepalived的指令碼.
#chmod 755 /etc/init.d/keepalived
#rc-update add keepalived default
#vi /etc/keepalived/keepalived.conf 加入
! Configuration File for keepalived
global_defs {
router_id mysql_cluster
}
vrrp_sync_group VG1 { (此處是ha部分)
group {
VI_1
}
}
vrrp_instance VI_1 {
state MASTER
interface eth0
lvs_sync_daemon_interface eth0
virtual_router_id 1 (此處server1為1,server2為2)
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass mysqlcluster
}
virtual_ipaddress {
192.168.1.120
}
}
virtual_server 192.168.1.120 3306 { (此處定義負載均衡部分,使用DR方式)
delay_loop 6
lvs_sched wlc
lvs_method DR
persistence_timeout 60
ha_suspend
protocol TCP
real_server 192.168.1.110 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
}
}
real_server 192.168.1.111 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
}
}
}
九,啟動
#/etc/init.d/keepalived start
#ip addr list (未安裝iproute2 ,無此命今,可以使用emerge iproute2安裝,注意emerge是gentoo的命今)
出現類似下面的資訊
eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:6f:f9:21 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.111/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.120/32 scope global eth0 (此行表明虛擬的ip生效了)
inet6 fe80::20c:29ff:fe6f:f921/64 scope link
valid_lft forever preferred_lft forever
#tail /var/log/messages 可以檢視更多資訊.
類似如下
Keepalived: Starting Keepalived v1.1.13 (03/26,2007)
Keepalived_healthcheckers: Using LinkWatch kernel netlink reflector...
Keepalived_healthcheckers: Registering Kernel netlink reflector
Keepalived_healthcheckers: Registering Kernel netlink command channel
Keepalived_healthcheckers: Configuration is using : 9997 Bytes
Keepalived: Starting Healthcheck child process, pid=27738
Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
Keepalived_vrrp: Registering Kernel netlink reflector
Keepalived_vrrp: Registering Kernel netlink command channel
Keepalived_vrrp: Registering gratutious ARP shared channel
Keepalived_vrrp: Configuration is using : 36549 Bytes
Keepalived: Starting VRRP child process, pid=27740
Keepalived_healthcheckers: Activating healtchecker for service [192.168.1.110:3306]
Keepalived_healthcheckers: Activating healtchecker for service [192.168.1.111:3306]
IPVS: sync thread started: state = MASTER, mcast_ifn = eth0, syncid = 2
Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Keepalived_vrrp: VRRP_Group(VG1) Syncing instances to MASTER state
Keepalived_vrrp: Netlink: skipping nl_cmd msg...
十、結束語
三篇文件旨在從mysql cluster應用角度考慮如何更好的使用mysql及linux和相關工具.文中有不到及錯誤的地方敬請不吝指正。
# make all && make modules_install && make install
#vi /boot/grub.conf 加入
title=2.6.20.3
kernel /vmlinuz-2.6.20.3 root=/你的根裝置
#reboot (以新核心啟動系統)
八、安裝ipvsadm和keepalived
#tar -zxvf ipvsadm-1.24.tar.gz -C /tmp/package
# cd /tmp/package/ipvsadm-1.24
# make && make install
#tar -zxvf keepalived-1.1.13.tar.gz -C /tmp/package
#cd /tmp/package/keepalived-1.1.13
#vi keepalived/vrrp/vrrp_arp.c
將 26 #include
27
28 /* local includes */
29 #include "vrrp_arp.h"
30 #include "memory.h"
31 #include "utils.h"
修改為
26 /* local includes */
27 #include "vrrp_arp.h"
28 #include "memory.h"
29 #include "utils.h"
30#include
31
就是將#include
#./configure --prefix=/usr --with-kernel-dir=/usr/src/linux-2.6.20.3
#make && make install
#vi /etc/init.d/keepalived 加入以下內容
#!/sbin/runscript
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-cluster/keepalived/files/init-keepalived,v 1.3 2004/07/15 00:55:17 agriffis Exp $
depend() {
use logger
need net
}
checkconfig() {
if [ ! -e /etc/keepalived/keepalived.conf ] ; then
eerror "You need an /etc/keepalived/keepalived.conf file to run keepalived"
return 1
fi
}
start() {
checkconfig || return 1
ebegin "Starting Keepalived"
start-stop-daemon --start --quiet --pidfile /var/run/keepalived.pid \
--startas /usr/sbin/keepalived
eend $?
}
stop() {
ebegin "Stopping Keepalived"
start-stop-daemon --stop --quiet --pidfile /var/run/keepalived.pid
eend $?
}
此為gentoo的keepalived的指令碼.
#chmod 755 /etc/init.d/keepalived
#rc-update add keepalived default
#vi /etc/keepalived/keepalived.conf 加入
! Configuration File for keepalived
global_defs {
router_id mysql_cluster
}
vrrp_sync_group VG1 { (此處是ha部分)
group {
VI_1
}
}
vrrp_instance VI_1 {
state MASTER
interface eth0
lvs_sync_daemon_interface eth0
virtual_router_id 1 (此處server1為1,server2為2)
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass mysqlcluster
}
virtual_ipaddress {
192.168.1.120
}
}
virtual_server 192.168.1.120 3306 { (此處定義負載均衡部分,使用DR方式)
delay_loop 6
lvs_sched wlc
lvs_method DR
persistence_timeout 60
ha_suspend
protocol TCP
real_server 192.168.1.110 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
}
}
real_server 192.168.1.111 3306 {
weight 1
TCP_CHECK {
connect_timeout 10
}
}
}
九,啟動
#/etc/init.d/keepalived start
#ip addr list (未安裝iproute2 ,無此命今,可以使用emerge iproute2安裝,注意emerge是gentoo的命今)
出現類似下面的資訊
eth0:
link/ether 00:0c:29:6f:f9:21 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.111/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.120/32 scope global eth0 (此行表明虛擬的ip生效了)
inet6 fe80::20c:29ff:fe6f:f921/64 scope link
valid_lft forever preferred_lft forever
#tail /var/log/messages 可以檢視更多資訊.
類似如下
Keepalived: Starting Keepalived v1.1.13 (03/26,2007)
Keepalived_healthcheckers: Using LinkWatch kernel netlink reflector...
Keepalived_healthcheckers: Registering Kernel netlink reflector
Keepalived_healthcheckers: Registering Kernel netlink command channel
Keepalived_healthcheckers: Configuration is using : 9997 Bytes
Keepalived: Starting Healthcheck child process, pid=27738
Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
Keepalived_vrrp: Registering Kernel netlink reflector
Keepalived_vrrp: Registering Kernel netlink command channel
Keepalived_vrrp: Registering gratutious ARP shared channel
Keepalived_vrrp: Configuration is using : 36549 Bytes
Keepalived: Starting VRRP child process, pid=27740
Keepalived_healthcheckers: Activating healtchecker for service [192.168.1.110:3306]
Keepalived_healthcheckers: Activating healtchecker for service [192.168.1.111:3306]
IPVS: sync thread started: state = MASTER, mcast_ifn = eth0, syncid = 2
Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Keepalived_vrrp: VRRP_Group(VG1) Syncing instances to MASTER state
Keepalived_vrrp: Netlink: skipping nl_cmd msg...
十、結束語
三篇文件旨在從mysql cluster應用角度考慮如何更好的使用mysql及linux和相關工具.文中有不到及錯誤的地方敬請不吝指正。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/90618/viewspace-609775/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis cluster 叢集Redis
- Redis Cluster(叢集)Redis
- node叢集(cluster)
- MySQL Galera cluster叢集常用引數說明MySql
- redis偽叢集配置Cluster叢集模式Redis模式
- Node js 叢集(cluster)JS
- 搭建redis cluster叢集Redis
- mysql之 Percona XtraDB Cluster叢集執行緒模型MySql執行緒模型
- Redis Cluster叢集模式部署Redis模式
- Docker Redis 5.0 叢集(cluster)搭建DockerRedis
- 認識Redis叢集——Redis ClusterRedis
- 玩轉Redis叢集之ClusterRedis
- Redis Cluster叢集模式部署XRedis模式
- dubbo原始碼分析之叢集Cluster原始碼
- 【Redis叢集實戰】Redis Cluster 部署Redis
- Spring Boot整合Redis叢集(Cluster模式)Spring BootRedis模式
- 在wildfly 21中搭建cluster叢集
- Redis-cluster叢集搭建部署Redis
- akka-typed(7) - cluster:sharding, 叢集分片
- 【Redis】Redis Cluster-叢集故障轉移Redis
- redis cluster 叢集故障恢復操作思路Redis
- Redis系列:搭建Redis叢集(叢集模式)Redis模式
- redis系列:叢集Redis
- mysql叢集搭建MySql
- 在滴滴雲上搭建 Redis-Cluster 叢集Redis
- Akka-Cluster(3)- ClusterClient, 叢集客戶端client客戶端
- redis Cluster模式叢集 多機器 docker 部署Redis模式Docker
- 三 GBase 8a MPP Cluster叢集擴容
- 四 GBase 8a MPP Cluster叢集縮容
- Redis Cluster 叢集搭建與擴容、縮容Redis
- ProxySQL Cluster 高可用叢集環境部署記錄SQL
- 搭建分散式 Redis Cluster 叢集與 Redis 入門分散式Redis
- Redis的主從複製,哨兵和Cluster叢集Redis
- Kubernetes(k8s)部署redis-cluster叢集K8SRedis
- MySQL 5.7 叢集搭建MySql
- MySQL MGR 叢集搭建MySql
- docker部署mysql叢集DockerMySql
- docker搭建mysql叢集DockerMySql
- 基於Docker搭建Percona XtraDB Cluster資料庫叢集Docker資料庫