十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
簡介
成都創(chuàng)新互聯(lián)公司長期為上千余家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為榆次企業(yè)提供專業(yè)的網(wǎng)站建設、成都網(wǎng)站制作,榆次網(wǎng)站改版等技術服務。擁有10多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
Percona XtraDB Cluster是針對MySQL用戶的高可用性和擴展性解決方案,基于Percona Server 。其包括了Write Set REPlication補丁,使用Galera 2.0庫,這是一個針對事務性應用程序的同步多主機復制插件。
Percona XtraDB Cluster特點:
?。?)同步復制,事務在所有集群節(jié)點要么同時提交,要么不提交。
?。?)多主復制,可以在任意一個節(jié)點寫入。
?。?)從服務器上的并行應用事件,真正的“并行復制”。
?。?)自動配置節(jié)點。
(5)數(shù)據(jù)一致性,沒有不同步的從服務器。
pxc框架圖

優(yōu)點總結:
可以達到時時同步,無延遲現(xiàn)象發(fā)生
完全兼容MySQL
對于集群中新節(jié)點的加入,維護起來很簡單
數(shù)據(jù)的強一致性
不足之處總結:
只支持Innodb存儲引擎
最大的缺點是多寫問題,最短板性能上限問題
在線DDL語句,鎖表問題
sst針對新節(jié)點加入的傳輸代價過高的問題
測試場景測試:
在我們硬件水平是256G內存,32核CPU,SSD硬件,單行數(shù)據(jù)大概1K,單表1千萬,512表。 QPS在2.5k寫+5K讀時,就會有節(jié)點同步阻塞問題。當時我們臨時切成只讀(不執(zhí)行寫SQL)10分鐘后,才緩解過來。寫queue配置參數(shù)在下面。
建議場景:低寫QPS的DB,使用PXC集群,以防硬件故障,達到高可用。
一、環(huán)境準備
1、系統(tǒng)環(huán)境
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)


2、數(shù)據(jù)庫環(huán)境
數(shù)據(jù)庫IP地址 | 數(shù)據(jù)庫版本 | 主機名 | server_id |
192.168.56.129 | 無 | master | 129 |
192.168.56.130 | 無 | slave1 | 130 |
192.168.56.131 | 無 | slave2 | 131 |
3、注意事項
暫時關閉防火墻和selinux服務
使用端口 3306 、4444、4567、4568
二、搭建(yum安裝)(三臺都要)
1、安裝percona環(huán)境
1.1、配置yum源
[root@master ~]# yum installhttp://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
[root@master ~]# yum install perl-IO-Socket-SSL perl-DBD-MySQL perl-Time-HiRes socat nc openssl -y
1.3、下載安裝Percona-XtraDB-Cluster
[root@master ~]# yum install -y libaio*
[root@master ~]# yum groupinstall -y 'Development tools'
[root@master ~]# yum install -y libssl.so.6
[root@master lib64]# ln -sf /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.6
[root@master lib64]# ln -sf /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.6
yum安裝
[root@master ~]# yum install Percona-XtraDB-Cluster-57


2、啟動服務
[root@master ~]# systemctl start mysqld.service (第一個節(jié)點啟動方式不一樣)
查看默認密碼
[root@master ~]# grep "temporary password" /var/log/mysqld.log
3、登錄數(shù)據(jù)庫修改


mysql> alter user 'root'@'localhost' identified by 'Jsq@2018';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
4、創(chuàng)建sst賬號密碼(只在第一個節(jié)點添加,其他同步即可)
mysql> GRANT RELOAD,LOCK TABLES,PROCESS,REPLICATION CLIENT ON *.* TO 'sstuser1'@'localhost' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;


5、配置mysqld.cnf文件
cat /etc/percona-xtradb-cluster.conf.d/mysqld.cnf
默認狀態(tài)


現(xiàn)在在/etc/my.cnf第一行添加[mysqld],然后重新啟動服務成功(節(jié)點2和節(jié)點3的也需要參照節(jié)點1在配置文件/etc/my.cnf的第一行添加[mysqld])。
master配置如下:
[mysqld]
#!includedir /etc/my.cnf.d/
#!includedir /etc/percona-xtradb-cluster.conf.d/
#PXC
# Path to Galera library
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
# Cluster connection URL contains the IPs of node#1, node#2 and node#3
wsrep_cluster_address=gcomm://192.168.56.129,192.168.56.130,192.168.56.131
# In order for Galera to work correctly binlog format should be ROW
binlog_format=ROW
# MyISAM storage engine has only experimental support
default_storage_engine=InnoDB
# This changes how InnoDB autoincrement locks are managed and is a requirement for Galera
innodb_autoinc_lock_mode=2
# Node #1 address
wsrep_node_address=192.168.56.129
wsrep_node_name=pxc1
# SST method
wsrep_sst_method=xtrabackup-v2
# Cluster name
wsrep_cluster_name=pxc-cluster
# Authentication for SST method
wsrep_sst_auth="sstuser1:123456"
slave1配置如下:
[mysqld]
#PXC
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.56.129,192.168.56.130,192.168.56.131
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_node_address=192.168.56.130
wsrep_node_name=pxc2
wsrep_sst_method=xtrabackup-v2
wsrep_cluster_name=pxc-cluster
wsrep_sst_auth="sstuser1:123456"
slave2配置如下:
[mysqld]
#PXC
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_address=gcomm://192.168.56.129,192.168.56.130,192.168.56.131
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
wsrep_node_address=192.168.56.131
wsrep_node_name=pxc3
wsrep_sst_method=xtrabackup-v2
wsrep_cluster_name=pxc-cluster
wsrep_sst_auth="sstuser1:123456"
啟動第一個節(jié)點
[root@master ~]# systemctl start mysql@bootstrap.service
[root@master ~]# systemctl status mysql@bootstrap.service


[root@master ~]# ss -tnl


其他節(jié)點采用正確方式啟動
[root@slave1 ~]# systemctl start mysqld.service
[root@slave2 ~]# systemctl start mysqld.service
6、查看三個節(jié)點狀態(tài)
mysql> show status like '%wsrep%';


三、測試
在master更新數(shù)據(jù)


在slave1更新數(shù)據(jù)


在slave2更新數(shù)據(jù)


到此即可?。。。。。。。。。。。。。。。。?/p>
網(wǎng)站名稱:MYSQL高可用之PXC
本文路徑:http://m.jiaotiyi.com/article/ggjheh.html