跳到主要内容

Percona-XtraDB-Cluster安装

· 阅读需 2 分钟
GavinTan
DevOps Engineer

pxc集群特点

特点说明
同步复制数据同时写入所有节点,或者即使在单个节点上也发生故障时根本不写入
多源复制任何节点都可以触发数据更新。
真正的并行复制副本上的多个线程在行级别执行复制
自动节点调配只需添加一个节点,它就会自动同步。
数据一致性不再有不同步的节点。
PXC 严格模式避免使用技术预览功能和不受支持的功能
ProxySQL 的配置脚本Percona XtraDB Cluster包含proxysql-admin工具,该工具能够自动配置使用ProxySQL的Percona XtraDB Cluster节点。
SSL加密的自动配置Percona XtraDB Cluster包含pxc-encrypt-cluster-traffic变量,该变量启用SSL加密的自动配置
优化性能Percona XtraDB Cluster的性能被优化,以适应不断增长的生产负载

准备环境

yum install -y openssl socat  \
procps-ng chkconfig procps-ng coreutils shadow-utils \
grep libaio libev libcurl perl-DBD-MySQL perl-Digest-MD5 \
libgcc libstdc++ libgcrypt libgpg-error zlib glibc openssl-libs

useradd -M -s /sbin/nologin mysql
mkdir -p /data/mysql /var/run/mysqld /var/log/mysqld
chown -R mysql. /data/mysql /var/run/mysqld /var/log/mysqld

安装

wget https://downloads.percona.com/downloads/Percona-XtraDB-Cluster-80/Percona-XtraDB-Cluster-8.0.27/binary/tarball/Percona-XtraDB-Cluster_8.0.27-18.1_Linux.x86_64.glibc2.17-minimal.tar.gz
tar zxf Percona-XtraDB-Cluster_8.0.27-18.1_Linux.x86_64.glibc2.17-minimal.tar.gz
mkdir -p /usr/local/percona
mv Percona-XtraDB-Cluster_8.0.27-18.1_Linux.x86_64.glibc2.17-minimal /usr/local/percona/mysql

cp /usr/local/percona/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -i 's/^basedir=.*/basedir=\/usr\/local\/percona\/mysql/' /etc/init.d/mysqld
sed -i 's/^datadir=.*/datadir=\/data\/mysql/' /etc/init.d/mysqld

cat <<EOF > /etc/profile.d/mysql.sh
export PATH=$PATH:/usr/local/percona/mysql/bin
EOF
source /etc/proflie

生成配置文件

不同节点需要修改server-idwsrep_node_namewsrep_node_address

cat <<EOF > /etc/my.cnf.d/pxc.cnf
[client]
socket=/var/run/mysqld/mysql.sock

[mysqld]
basedir=/usr/local/percona/mysql
datadir=/data/mysql

socket=/var/run/mysqld/mysql.sock
pid-file=/var/run/mysqld/mysqld.pid
log-error=/var/log/mysqld/mysqld.log

server-id=14
user=mysql

log-bin
binlog_format=ROW
binlog_expire_logs_seconds=604800

innodb_autoinc_lock_mode=2
default_storage_engine=InnoDB
log_timestamps=SYSTEM

######## wsrep ###############
wsrep_cluster_name=pxc-cluster-tt
wsrep_cluster_address=gcomm://172.16.7.14,172.16.7.15,172.16.7.16
wsrep_node_name=pxc-node-14
wsrep_node_address=172.16.7.14
wsrep_applier_threads=8
wsrep_log_conflicts
pxc_strict_mode=ENFORCING
wsrep_sst_method=xtrabackup-v2
wsrep_provider=/usr/local/percona/mysql/lib/libgalera_smm.so
wsrep_provider_options="socket.ssl_key=server-key.pem;socket.ssl_cert=server-cert.pem;socket.ssl_ca=ca.pem"


[sst]
encrypt=4
ssl-key=server-key.pem
ssl-ca=ca.pem
ssl-cert=server-cert.pem
EOF

初始化数据库

mysqld --initialize

启动数据库

提示

从 8.0.31 版本开始,SST 复制在 root 用户下停止工作。myqld不能在root下启动!

su mysql -s /bin/bash -c '/etc/init.d/mysqld start'
#第一个启动节点必须使用bootstrap-pxc方式,须注释functions不使用systemd不然bootstrap-pxc参数无效
sed -i 's/^. \/etc\/rc.d\/init.d\/functions/#&/' /etc/init.d/mysqld
/etc/init.d/mysqld bootstrap-pxc

#其他节点启动
#同步证书,其他节点必须使用第一个启动节点的证书
rsync -aP 172.16.7.14:/data/mysql/*.pem /data/mysql
/etc/init.d/mysqld start