1.概念:html
Percona Xtradb Cluster,簡稱PXC。是基於Galera插件的MySQL集羣。node
詳細原理請移步個人另外文章:理解PXC集羣原理mysql
2.搭建:linux
官方手冊地址:https://www.percona.com/doc/percona-xtradb-cluster/LATEST/index.html
sql
環境:PXC101 IP:192.168.1.101 端口:3306 版本5.7 CentOS7
數據庫
PXC102 IP:192.168.1.102 端口:3306 版本5.7 CentOS7
vim
PXC103 IP:192.168.1.103 端口:3306 版本5.7 CentOS7安全
1.關閉系統防火牆bash
#systemctl stop firewalld #systemctl disable firewalld #取消防火牆開機自啓動
2.關閉selinuxsocket
#vim /etc/selinux/config SELINUX=permissive #getenforce #檢查是否關閉
3.安裝依賴,與相關診斷軟件
#yum install lsof socat telnet #telnet用於檢查端口
4.下載,解壓二進制安裝包(三個主機都執行):
(選擇二進制安裝包,能夠避免各類編譯或者Yum安裝依賴關係,最節省時間,且往後升級方便)
101版本對應REHL系列版本,100對應DEBIAN系列版本,有區別
#wget https://www.percona.com/downloads/Percona-XtraDB-Cluster-LATEST/Percona-XtraDB-Cluster-5.7.19-29.22-3/binary/tarball/Percona-XtraDB-Cluster-5.7.19-rel17-29.22.3.Linux.x86_64.ssl101.tar.gz -P /usr/local/src #tar -zxf /usr/local/src/Percona-Xtra(...).tar.gz -C /usr/local #建立符號鏈接,即建立快捷方式,這也是往後方便升級的小技巧 #ln -s /usr/local/Percona-XtraDB-Cluster-5.7.19-rel17-29.22.3.Linux.x86_64.ssl101 /usr/local/mysql #將可執行文件位置關聯到路徑中,方便像Yum安裝的程序同樣直接調用 #echo "PATH=$PATH:/usr/local/mysql/bin"|cat >>/etc/profile #source /etc/profile
5.建立MySQL用戶與用戶組,權限相關(三個主機都執行):
#useradd -d /usr/local/mysql -s /sbin/nologin -U -M mysql #mkdir -p /data/mysql/3306/{data,logs,tmp} #chown -R mysql.mysql /data/*
6.建立配置文件(三個主機都執行):
cat << EOF >/data/mysql/3306/my.cnf [client] #省略 [mysql] #省略 [mysqld] basedir = /usr/local/mysql datadir = /data/mysql/3306/data/ socket = /data/mysql/3306/tmp/mysql3306.sock pid-file = PXC3306.pid #省略# #log log-bin = mysql-bin sync_binlog = 1 innodb_flush_log_at_trx_commit = 1 #省略# #InnoDB innodb_file_per_table = 1 ##InnoDB IO innodb_data_file_path = ibdata1:1G:autoextend innodb_thread_concurrency = 0 #replication server-id = 1013306 #IP+PORT master_info_repository = TABLE relay_log_info_repository = TABLE binlog_format = row relay_log_recovery = 1 relay-log-purge = 1 ##GTID gtid_mode = on #必須 enforce_gtid_consistency = 1 #必須 #省略# #PXC MODE wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so #galera插件位置 wsrep_cluster_name=zrz #集羣名稱 wsrep_cluster_address=gcomm://192.168.1.101,192.168.1.102,192.168.1.103 #羣集全部主機地址 wsrep_node_name=PXC101 #本節點名稱 wsrep_node_address=192.168.1.101 #本節點IP wsrep_sst_method=xtrabackup-v2 #寫集全量同步傳輸方式 wsrep_sst_auth=dba:123456 #寫集傳輸驗證用戶與密碼 pxc_strict_mode=ENFORCING #必須,涉及到集羣數據安全 binlog_format=ROW #必須 default_storage_engine=InnoDB #必須 innodb_autoinc_lock_mode=2 #自增鎖離散分配自增主鍵 EOF
先將上述配置文件中的PXC MODE相關配置項註釋掉(前面加#)
#/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/3306/my.cnf --initialize --user=mysql &
獲取初始密碼並更改root密碼,建立全量寫集傳輸用戶
#grep -i password /data/mysql/3306/error.log #mysqld --defaults-file=/data/mysql/3306/my.cnf & #純單實例方式啓動MySQL #mysql -u root -p #輸入剛剛grep獲得的密碼 #回車後輸入剛剛查到的密碼 >set password='123456'; #更改root用戶密碼 >flush privileges; >create user dba@'localhost' identified by '123456'; #建立全量寫集傳輸用戶 >GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'dba'@'localhost'; >flush privileges; >shutdown; #關閉實例 >exit
8.啓動PXC第一個節點
先將上一步註釋掉的PXC MODE相關配置項從新啓用(前面刪掉#)
#/usr/local/mysql/bin/mysqld--defaults-file=/data/mysql/3306/my.cnf --user=mysql --wsrep-new-cluster&
同時tail -f /data/mysql/3306/error.log會觀察到:
9.啓動第二個第三個節點
#在第二個節點上執行 #/usr/local/mysql/bin/mysqld--defaults-file=/data/mysql/3306/my.cnf --user=mysql&
#在第三個節點上執行 #/usr/local/mysql/bin/mysqld--defaults-file=/data/mysql/3306/my.cnf --user=mysql&
這時在第一個節點的錯誤節點上觀測錯誤日誌能夠獲得
在第二個節點或者第三個節點上均可以觀測到:
OK,都啓動成功。
3.查看WSREP寫集同步
1.查看寫集同步相關參數
在任意一個已經進入同步狀態的實例上執行
>show global status like "%wsrep%";
輸出以下:
2.檢查同步狀況
在實例3上建立數據庫
>create database dba;
在實例1和實例2上均可以觀測到:
>show database;
OK,到這裏,咱們就完成了整個PXC集羣的建立
4.注意:
第一個節點啓動時需添加 --wsrep-new-cluster參數。
而節點加入已經啓動的集羣,則不須要這個參數,按照正常啓動方式便可。
更多疑難故障解答,請瀏覽個人下個帖子:PXC搭建故障疑難解答