標籤:pxc mysql高可用叢集架構
前段時間,老張給大家介紹了企業中主流MySQL高可用叢集架構三部曲中的前兩部,有不瞭解的同學可以去訪問我之前的部落格內容。
第一部曲直通車>> 企業中MySQL主流高可用架構實戰三部曲之MHA
第二部曲直通車>>企業中MySQL高可用叢集架構三部曲之MM+keepalived
獨家新課程上線>>MySQL體繫結構深入剖析及實戰DBA視頻課程
今兒給大家介紹最後一部曲,是percona公司的percona xtraDB cluster.簡稱PXC。它是基於GaLera協議的高可用叢集方案。可以實現多個節點間的資料同步複製以及讀寫,並且可保障資料庫的服務高可用及資料強一致性。
PXC 架構圖:
650) this.width=650;" src="https://s5.51cto.com/wyfs02/M00/9E/5E/wKiom1mPuZ-AcvEJAAB5ptTZsXk738.jpg" title="wKiom1l3Dyrgmaz4AAB5pFyGSa4564.jpg" alt="wKiom1mPuZ-AcvEJAAB5ptTZsXk738.jpg" />
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M02/9E/4D/wKioL1mPue6S13UXAAC4JD27z34209.png-wh_500x0-wm_3-wmp_4-s_2681636939.png" title="1.png" alt="wKioL1mPue6S13UXAAC4JD27z34209.png-wh_50" />
pxc就屬於一套近乎完美的MySQL高可用叢集架構方案;
優點總結:
可以達到時時同步,無延遲現象發生
完全相容MySQL
對於叢集中新節點的加入,維護起來很簡單
資料的強一致性
不足之處總結:
只支援Innodb儲存引擎
存在多節點update更新問題,也就是寫放大問題
線上DDL語句,鎖表問題
sst針對新節點加入的傳輸代價過高的問題
實戰過程:
環境介紹:
192.168.56.100 node1192.168.56.101 node2192.168.56.102 node3
安裝之前的注意事項:
三台機器的防火牆iptables都要關閉,三台機器的server-id不能一樣。
PXC軟體包下載:
https://www.percona.com/downloads/Percona-XtraDB-Cluster-56/LATEST/
這裡我下載的是:Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64.tar.gz
接下來三台機器上都需要針對基礎軟體包進行安裝,使用yum安裝即可,解決依賴性。
perl-IO-Socket-SSL.noarch perl-DBD-MySQL.x86_64 perl-Time-HiRes openssl openssl-devel socat
在節點一(192.168.56.100)上執行操作:
先解壓軟體包並賦予許可權
cd /usr/local/tar -zxvf Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64.tar.gzln -s Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64 mysqlchown mysql:mysql -R mysqlmkdir -p /data/mysqlchown mysql:mysql -R /data/mysql
配置pxc的參數檔案,這裡就比普通的MySQL參數檔案多如下幾點:
提及一點注意事項:這裡binlog的格式必須row
#pxcdefault_storage_engine=Innodbinnodb_autoinc_lock_mode=2wsrep_cluster_name=pxc_zs ---------------叢集的名字wsrep_cluster_address=gcomm://192.168.56.100,192.168.56.101,192.168.56.102(叢集中節點的IP)wsrep_node_address=192.168.56.100------當前機器的ip地址wsrep_provider=/usr/local/mysql/lib/libgalera_smm.sowsrep_sst_method=xtrabackup-v2 (sst傳輸方法)wsrep_sst_auth=sst:zs (帳號許可權)
初始化資料:
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/ --defaults-file=/etc/my.cnf --user=mysql
啟動第一節點的服務:
cd /usr/local/mysql/support-filescp mysql.server /etc/init.d/mysql
[[email protected] support-files]# /etc/init.d/mysql bootstrap-pxcBootstrapping PXC (Percona XtraDB Cluster)MySQL (Percona Xt[ OK ]ster) running (4740)
啟動成功之後,維護資料庫環境並建立使用者
mysql> delete from mysql.user where user!=‘root‘ or host!=‘localhost‘;mysql> grant all privileges on *.* to ‘zs‘@‘%‘ identified by ‘zs‘;mysql> grant all privileges on *.* to ‘sst‘@‘localhost‘ identified by ‘zs‘;mysql> flush privileges;
在節點二(192.168.56.101)上執行操作:
cd /usr/local/tar -zxvf Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64.tar.gzln -s Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64 mysqlchown mysql:mysql -R mysqlmkdir -p /data/mysqlchown mysql:mysql -R /data/mysql
編輯pxc的設定檔:
#pxcdefault_storage_engine=Innodbinnodb_autoinc_lock_mode=2wsrep_cluster_name=pxc_zs ---------------叢集的名字wsrep_cluster_address=gcomm://192.168.56.100,192.168.56.101,192.168.56.102(叢集中節點的IP)wsrep_node_address=192.168.56.101------當前機器的ip地址wsrep_provider=/usr/local/mysql/lib/libgalera_smm.sowsrep_sst_method=xtrabackup-v2 (sst傳輸方法)wsrep_sst_auth=sst:zs (帳號許可權)
初始化資料:
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/ --defaults-file=/etc/my.cnf --user=mysql
啟動第二個節點的服務:
cd /usr/local/mysql/support-filescp mysql.server /etc/init.d/mysql
[[email protected] mysql]# /etc/init.d/mysql startStarting MySQL (Percona XtraDB Cluster).. [ OK ]
在第三個節點(192.168.56.102)上面執行:
cd /usr/local/tar -zxvf Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64.tar.gzln -s Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64 mysqlchown mysql:mysql -R mysqlmkdir -p /data/mysqlchown mysql:mysql -R /data/mysql
編輯pxc的設定檔:
#pxcdefault_storage_engine=Innodbinnodb_autoinc_lock_mode=2wsrep_cluster_name=pxc_zs ---------------叢集的名字wsrep_cluster_address=gcomm://192.168.56.100,192.168.56.101,192.168.56.102(叢集中節點的IP)wsrep_node_address=192.168.56.102------當前機器的ip地址wsrep_provider=/usr/local/mysql/lib/libgalera_smm.sowsrep_sst_method=xtrabackup-v2 (sst傳輸方法)wsrep_sst_auth=sst:zs (帳號許可權)
初始化資料:
/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/data/mysql/ --defaults-file=/etc/my.cnf --user=mysql
啟動第三個節點的服務:
cd /usr/local/mysql/support-filescp mysql.server /etc/init.d/mysql
[[email protected] mysql]# /etc/init.d/mysql startStarting MySQL (Percona XtraDB Cluster).. [ OK ]
註:其他兩個節點同樣進行安裝與初始化的操作;
但啟動方式不是以/etc/init.d/mysql bootstrap-pxc,換成/etc/init.d/mysql start 這種方式
三個節點都已經啟動成功,這樣在任意一個節點上面,執行一條DML語句的操作,都會同步到另外兩個節點。
650) this.width=650;" src="https://s1.51cto.com/wyfs02/M01/9E/66/wKiom1mQQ7Tx2e4MAAAsJ2ViqQ8543.png" title="2.png" alt="wKiom1mQQ7Tx2e4MAAAsJ2ViqQ8543.png" />
至此張老師的企業級MySQL主流高可用叢集架構三部曲就完結了!有欠妥的地方,請大家多多指教。
今後還會出更多好文章奉獻給大家,技術只有在無限的分享中,得到進一步地升華!
讓我們一起加油!
本文出自 “張甦的部落格” 部落格,轉載請與作者聯絡!
企業主流MySQL高可用叢集架構三部曲之PXC