Percona XtraDB Cluster (PXC) 基於 Galera 庫實現**同步多主複寫**,解決傳統主從複寫的延遲與數據不一致問題。本文記錄在 CentOS/RHEL 6 上安裝 PXC 5.6 的標準化步驟。
rpm -qa | grep -i mysql-server | xargs rpm -e --nodeps
# EPEL 源
wget https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
# nc (Galera SST 需要)
wget https://mirror.centos.org/centos/6/os/x86_64/Packages/nc-1.84-22.el6.x86_64.rpm
rpm -ivh nc-1.84-22.el6.x86_64.rpm
# socat (xtrabackup-v2 SST 需要)
wget https://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/socat-1.7.2.4-1.el6.rf.x86_64.rpm
rpm -ivh socat-1.7.2.4-1.el6.rf.x86_64.rpm
yum install https://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
yum install Percona-XtraDB-Cluster-56
/etc/init.d/mysql start
mysql -uroot -p # 首次啟動無密碼
在 MySQL 中執行:
CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'sstuser';
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
FLUSH PRIVILEGES;
若 CREATE USER 報 Lost connection,執行升級:
mysql_upgrade -uroot -p --skip-version-check
[client]
socket=/var/lib/mysql/mysql.sock
[mysqld]
server_id=1 # 每節點唯一
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
# Galera 核心配置
wsrep_provider=/usr/lib64/libgalera_smm.so
wsrep_provider_options="gcache.size=300M; gcache.page_size=1G"
wsrep_cluster_name="mycluster"
wsrep_cluster_address="gcomm://192.168.1.10,192.168.1.11" # 所有節點 IP
wsrep_sst_method=rsync # 首次同步用 rsync,後續可改 xtrabackup-v2
wsrep_node_address=192.168.1.10 # 本節點 IP
wsrep_sst_auth="sstuser:sstuser"
wsrep_node_name=pxc1
wsrep_slave_threads=4
[mysql_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
關鍵參數說明:
wsrep_cluster_address:所有節點 IP,首個啟動節點可只寫 gcomm://(引導模式)。wsrep_node_address:**每節點必須改為自身 IP**。wsrep_sst_method:新叢集首次同步建議 rsync,穩定後可改 xtrabackup-v2(非阻塞)。/etc/init.d/mysql bootstrap-pxc/etc/init.d/mysql start(自動向引導節點同步)觀察錯誤日誌 /var/log/mysqld.log,出現 WSREP: Synchronized with group 表示同步完成。
若啟動失敗,日誌出現 permission denied,執行:
yum -y install policycoreutils-python
semanage permissive -a mysqld_t
mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep%';"
# 關鍵指標
wsrep_cluster_size = 節點數
wsrep_ready = ON
wsrep_connected = ON
wsrep_local_state_comment = Synced
PXC 部署核心在於:移除衝突包 → 裝依賴 → 裝 PXC → 建 SST 用戶 → 配置 my.cnf(特別是 wsrep_* 參數)→ 引導首節點 → 其餘節點自動加入。掌握此流程,可快速建立高可用、強一致的 MySQL 叢集。