企業主流MySQL高可用集羣架構三部曲之PXC

前段時間,老張給你們介紹了企業中主流MySQL高可用集羣架構三部曲中的前兩部,有不瞭解的同窗能夠去訪問我以前的博客內容。php

第一部曲直通車>> 企業中MySQL主流高可用架構實戰三部曲之MHAhtml


第二部曲直通車>>企業中MySQL高可用集羣架構三部曲之MM+keepalivednode


獨家新課程上線>>MySQL體系結構深刻剖析及實戰DBA視頻課程mysql


今兒給你們介紹最後一部曲,是percona公司的percona xtraDB cluster.簡稱PXC。它是基於GaLera協議的高可用集羣方案。能夠實現多個節點間的數據同步複製以及讀寫,而且可保障數據庫的服務高可用及數據強一致性
sql


PXC 架構圖:mongodb

wKiom1mPuZ-AcvEJAAB5ptTZsXk738.jpg


wKioL1mPue6S13UXAAC4JD27z34209.png-wh_50


pxc就屬於一套近乎完美的MySQL高可用集羣架構方案;數據庫

優勢總結:bootstrap

  1. 能夠達到時時同步,無延遲現象發生bash

  2. 徹底兼容MySQL架構

  3. 對於集羣中新節點的加入,維護起來很簡單

  4. 數據的強一致性

不足之處總結:

  1. 只支持Innodb存儲引擎

  2. 存在多節點update更新問題,也就是寫放大問題

  3. 在線DDL語句,鎖表問題

  4. sst針對新節點加入的傳輸代價太高的問題


實戰過程:

環境介紹:

192.168.56.100  node1
192.168.56.101  node2
192.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.gz
ln -s Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64 mysql
chown mysql:mysql -R mysql
mkdir -p /data/mysql
chown mysql:mysql -R /data/mysql

配置pxc的參數文件,這裏就比普通的MySQL參數文件多以下幾點:

說起一點注意事項:這裏binlog的格式必須row

#pxc
default_storage_engine=Innodb
innodb_autoinc_lock_mode=2
wsrep_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.so
wsrep_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-files
cp mysql.server /etc/init.d/mysql
[root@node1 support-files]# /etc/init.d/mysql bootstrap-pxc
Bootstrapping 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.gz
ln -s Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64 mysql
chown mysql:mysql -R mysql
mkdir -p /data/mysql
chown mysql:mysql -R /data/mysql

編輯pxc的配置文件:

#pxc
default_storage_engine=Innodb
innodb_autoinc_lock_mode=2
wsrep_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.so
wsrep_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-files
cp mysql.server /etc/init.d/mysql
[root@node2 mysql]# /etc/init.d/mysql start
Starting 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.gz
ln -s Percona-XtraDB-Cluster-5.6.21-rel70.1-25.8.938.Linux.x86_64 mysql
chown mysql:mysql -R mysql
mkdir -p /data/mysql
chown mysql:mysql -R /data/mysql

編輯pxc的配置文件:

#pxc
default_storage_engine=Innodb
innodb_autoinc_lock_mode=2
wsrep_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.so
wsrep_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-files
cp mysql.server /etc/init.d/mysql
[root@node3 mysql]# /etc/init.d/mysql start
Starting MySQL (Percona XtraDB Cluster)..                  [  OK  ]


注:其餘兩個節點一樣進行安裝與初始化的操做;

但啓動方式不是以/etc/init.d/mysql  bootstrap-pxc,換成/etc/init.d/mysql  start 這種方式


三個節點都已經啓動成功,這樣在任意一個節點上面,執行一條DML語句的操做,都會同步到另外兩個節點。

wKiom1mQQ7Tx2e4MAAAsJ2ViqQ8543.png

至此張老師的企業級MySQL主流高可用集羣架構三部曲就完結了!有欠妥的地方,請你們多多指教。

從此還會出更多好文章奉獻給你們,技術只有在無限的分享中,獲得進一步地昇華!


讓咱們一塊兒加油!

相關文章
相關標籤/搜索