您好,登錄后才能下訂單哦!
簡介
Percona XtraDB Cluster是針對MySQL用戶的高可用性和擴展性解決方案,基于Percona Server 。其包括了Write Set REPlication補丁,使用Galera 2.0庫,這是一個針對事務性應用程序的同步多主機復制插件。
Percona XtraDB Cluster特點:
(1)同步復制,事務在所有集群節點要么同時提交,要么不提交。
(2)多主復制,可以在任意一個節點寫入。
(3)從服務器上的并行應用事件,真正的“并行復制”。
(4)自動配置節點。
(5)數據一致性,沒有不同步的從服務器。
pxc框架圖
優點總結:
可以達到時時同步,無延遲現象發生
完全兼容MySQL
對于集群中新節點的加入,維護起來很簡單
數據的強一致性
不足之處總結:
只支持Innodb存儲引擎
最大的缺點是多寫問題,最短板性能上限問題
在線DDL語句,鎖表問題
sst針對新節點加入的傳輸代價過高的問題
測試場景測試:
在我們硬件水平是256G內存,32核CPU,SSD硬件,單行數據大概1K,單表1千萬,512表。 QPS在2.5k寫+5K讀時,就會有節點同步阻塞問題。當時我們臨時切成只讀(不執行寫SQL)10分鐘后,才緩解過來。寫queue配置參數在下面。
建議場景:低寫QPS的DB,使用PXC集群,以防硬件故障,達到高可用。
一、環境準備
1、系統環境
[root@master ~]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)
2、數據庫環境
數據庫IP地址 | 數據庫版本 | 主機名 | 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環境
1.1、配置yum源
[root@master ~]# yum install http://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 (第一個節點啟動方式不一樣)
查看默認密碼
[root@master ~]# grep "temporary password" /var/log/mysqld.log
3、登錄數據庫修改
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、創建sst賬號密碼(只在第一個節點添加,其他同步即可)
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
默認狀態
現在在/etc/my.cnf第一行添加[mysqld],然后重新啟動服務成功(節點2和節點3的也需要參照節點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"
啟動第一個節點
[root@master ~]# systemctl start mysql@bootstrap.service
[root@master ~]# systemctl status mysql@bootstrap.service
[root@master ~]# ss -tnl
其他節點采用正確方式啟動
[root@slave1 ~]# systemctl start mysqld.service
[root@slave2 ~]# systemctl start mysqld.service
6、查看三個節點狀態
mysql> show status like '%wsrep%';
三、測試
在master更新數據
在slave1更新數據
在slave2更新數據
到此即可!!!!!!!!!!!!!!!!!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。