MySQL數據庫高可用集羣搭建-PXC集羣部署

Percona XtraDB Cluster(下文簡稱PXC集羣)提供了MySQL高可用的一種實現方法。集羣是有節點組成的,推薦配置至少3個節點,可是也能夠運行在2個節點上。node

PXC原理描述:mysql

分佈式系統的CAP理論:C:一致性,全部的節點數據一致A:可用性,一個或者多個節點失效,不影響服務請求P:分區容忍性,節點間的鏈接失效,仍然能夠處理請求其實,任何一個分佈式系統,須要知足這三個中的兩個。PXC的優勢:1)服務高可用;2)數據同步複製(併發複製),幾乎無延遲;3)多個可同時讀寫節點,可實現寫擴展,不過最好事先進行分庫分表,讓各個節點分別寫不一樣的表或者庫,避免讓galera解決數據衝突;4)新節點能夠自動部署,部署操做簡單;5)數據嚴格一致性,尤爲適合電商類應用;6)徹底兼容MySQL; linux

一些名詞介紹:sql

WS:write set寫數據集,寫/更新事務IST:Incremental State Transfer 增量同步SST:State Snapshot Transfe 全量同步。 SST支持的方法有:mysqldump,rsync ,xtrabackup 。mysqldump,rsync同步須要READ LOCK, (SST applies FLUSH TABLES WITH READ LOCK command) xtrabackup 在整個同步數據過程當中不須要READ LOCK。 配置參數:wsrep_sst_method=xtrabackup-v2UUID:節點狀態改變及順序的惟一標識GTID:Global Transaction ID,由UUID和sequence number偏移量組成。wsrep api中定義的集羣內部全局事務id,用於記錄集羣中發生狀態改變的惟一標識以及隊列中的偏移量。WSRWP API:在DBMS庫和wsrep provider之間提供接口 數據庫

PXC環境所涉及的端口:bootstrap

mysql實例端口:3306#PXC cluster相互通信的端口:4567 #用於SST傳送的端口:4444 #用於IST傳送的端口:4568

1.有3個節點centos

pxc_node0 192.0.0.197 pxc_node1 192.0.0.198 pxc_node2 192.0.0.199 api

2.防火牆設置安全

01關閉防火牆併發

systemctl stop firewalld.service # systemctl disable firewalld.servie

02或開啓防火牆對應的端口:

firewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --zone=public --add-port=4444/tcp --permanentfirewall-cmd --zone=public --add-port=4567/tcp --permanentfirewall-cmd --zone=public --add-port=4568/tcp --permanent

開放完4個端口後,從新加載防火牆規則

firewall-cmd --reload 

3.關閉SELINUX ,安全加強型 Linux(Security-Enhanced Linux)SELinux主要由美國國家安全局開發

01執行命令 永久關閉Selinux

vi /etc/selinux/config 把SELINUX屬性值設置成disabled  

02或者執行命令 Linux臨時關閉Selinux

setenforce 0

4.下載安裝,在pxc_node0,pxc_node2,pxc_node2分別進行以下安裝 

基礎安裝[root@percona1 ~]# yum -y groupinstall Base Compatibility libraries Debugging Tools Dial-up Networking suppport Hardware monitoring utilities Performance Tools Development tools組件安裝[root@percona1 ~]# yum install http://www.percona.com/downlo... -y[root@percona1 ~]# yum install Percona-XtraDB-Cluster-55 -y

5.中止mysql服務,選擇一個node做爲名義上的master,只須要修改mysql的配置文件/etc/my.cnf(須要分別配置)

PXC集羣中MySQL實例的惟一ID,不能重複,必須是數字server-id=1 wsrep_provider=/usr/lib64/galera3/libgalera_smm.so#PXC集羣的名稱wsrep_cluster_name=pxc-cluster wsrep_cluster_address=gcomm://192.0.0.197,192.0.0.198,192.0.0.199#當前節點的名稱wsrep_node_name=pxc1 #當前節點的IPwsrep_node_address=192.0.0.197 #同步方法(mysqldump、rsync、xtrabackup)wsrep_sst_method=xtrabackup-v2 #同步使用的賬戶wsrep_sst_auth= admin:Abc_123456 #同步嚴厲模式pxc_strict_mode=ENFORCING #基於ROW複製(安全可靠)binlog_format=ROW #默認引擎default_storage_engine=InnoDB #主鍵自增加不鎖表innodb_autoinc_lock_mode=2 寶寶起名寶典

6.啓動第一個節點

/etc/init.d/mysql bootstrap-pxc 若是是centos7,則啓動命令以下:systemctl start mysql@bootstrap.service如果重啓的話,就先kill,而後刪除pid文件後再執行上面的啓動命令

7.數據庫用戶名密碼的設置

mysql> UPDATE mysql.user SET password=PASSWORD("Passw0rd") where user='root'; 

8.配置SST認證帳號

mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 's3cret';mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON . TO 'sstuser'@'localhost';mysql> FLUSH PRIVILEGES;  

9.啓動其餘節點

/etc/init.d/mysql start

各個節點都採用第一個修改的root密碼登陸

10.經常使用命令

查看節點數:

show global status like 'wsrep_cluster_size';  

查看集羣狀態:

show global status like 'wsrep_cluster_size';

查看當前節點狀態:

show global status like 'wsrep_cluster_status';

經過查看4567 端口確認集羣是否啓動:

netstat -plantu | grep mysqld 

集羣關閉:全部節點都用

/etc/init.d/mysql stop

節點重啓第一個節點用:

/etc/init.d/mysql restart-bootstrap

其餘節點用:

/etc/init.d/mysql restart

11.其餘注意事項:

集羣關閉以後,再啓動,誰作第一個節點誰就執行/etc/init.d/mysql bootstrap-pxc

若是最後關閉的PXC節點是安全退出的,那麼下次啓動要最早啓動這個節點,並且要以主節點啓動 若是最後關閉的PXC節點不是安全退出的,

那麼要先修改/var/lib/mysql/grastate.dat 文件, 把其中的safe_to_bootstrap屬性值設置爲1, 再安裝主節點啓動。

除了名義上的master以外,其它的node節點只須要啓動mysql便可。

節點的數據庫的登錄和master節點的用戶名密碼一致,自動同步。因此其它的節點數據庫用戶名密碼無須從新設置。

只須要在名義上的master節點上設置權限,其它的節點配置好/etc/my.cnf後,只須要啓動mysql就行,權限會自動同步過來。

相關文章
相關標籤/搜索