MySQL PXC 高可用集群搭建
1.准备环境
--用户用户组
groupadd mysql
useradd -g mysql mysql
--目录
mkdir -p /data/PXC/{data,redo,binlog,tmp,logs} chown -R mysql:mysql /data/PXC chmod -R 755 /data/PXC chown -R mysql:mysql PXC chmod -R 755 PXC
修改内核参数
[root@mar3 PXC]# cat /etc/security/limits.conf |grep -v ^$|grep -v ^# mysql soft nproc 65535 mysql hard nproc 65535 mysql soft nofile 65535 mysql hard nofile 65535
关闭各个节点防火墙:
systemctl stop firewalld
systemctl disable firewalld
2安装相关软件
socat
yum -y install socat
安装xtrabckup
cat <<eof>>/etc/yum.repos.d/percona.repo > [percona] > name = Percona > baseurl = https://mirrors.tuna.tsinghua.edu.cn/percona/release/\$releasever/RPMS/\$basearch > enabled = 1 > gpgcheck = 0 > > [epel] > name=epelrepo > baseurl=https://mirrors.aliyun.com/epel/\$releasever/\$basearch > gpgcheck=0 > enable=1 > eof
[root@mar3 PXC]# yum list all| grep xtraback -i percona-xtrabackup-24.x86_64 2.4.21-1.el7 @percona holland-xtrabackup.noarch 1.1.21-1.el7 epel percona-xtrabackup.x86_64 2.3.10-1.el7 percona percona-xtrabackup-22.x86_64 2.2.13-1.el7 percona percona-xtrabackup-22-debuginfo.x86_64 2.2.13-1.el7 percona percona-xtrabackup-24-debuginfo.x86_64 2.4.21-1.el7 percona percona-xtrabackup-80.x86_64 8.0.14-1.el7 percona percona-xtrabackup-80-debuginfo.x86_64 8.0.14-1.el7 percona percona-xtrabackup-debuginfo.x86_64 2.3.10-1.el7 percona percona-xtrabackup-test.x86_64 2.3.10-1.el7 percona percona-xtrabackup-test-22.x86_64 2.2.13-1.el7 percona percona-xtrabackup-test-24.x86_64 2.4.21-1.el7 percona percona-xtrabackup-test-80.x86_64 8.0.14-1.el7 percona
yum -y install percona-xtrabackup-24.x86_64
安装pxc
gunzip Percona-XtraDB-Cluster-5.7.26-rel29-31.37.1.Linux.x86_64.ssl101.tar.gz tar -zxvf Percona-XtraDB-Cluster-5.7.26-rel29-31.37.1.Linux.x86_64.ssl101.tar -C /usr/local/ mv /usr/local/Percona-XtraDB-Cluster-5.7.26-rel29-31.37.1.Linux.x86_64.ssl101 /usr/local/mysql chown -R mysql:mysql /usr/local/mysql chmod -R 755 /usr/local/mysql
3.创建my.cnf配置文件,
标红色的部分要根据 每个节点的情况更改
[root@mar0 PXC]# cat my.cnf |grep -v ^# [client] default-character-set = uft8 port = 3306 socket = /data/PXC/tmp/mysql.sock [mysql] prompt="\u@mysqldb \R:\m:\s [\d]> " [mysqld] basedir=/usr/local/mysql datadir = /data/PXC/data port = 3306 server_id = 101 socket = /data/PXC/tmp/mysql.sock tmpdir=/data/PXC/tmp character-set-server=utf8 log-error= /data/PXC/logs/alert_3306.log pid-file = /data/PXC/tmp/mar0.inno.com.mysql_3306.pid gtid_mode=ON log-slave-updates=ON enforce-gtid-consistency=ON binlog_format = ROW skip-slave-start=1 log-bin=/data/PXC/binlog/mysql-bin master_info_repository=TABLE relay_log_purge=0 binlog_checksum=NONE transaction_write_set_extraction=XXHASH64 secure_file_priv=/data/export slow_query_log=on long_query_time=1 slow_query_log_file=/data/PXC/logs/slow.log log_queries_not_using_indexes=on log_output=FILE general_log = on innodb_data_file_path=ibdata1:2G:autoextend innodb_log_group_home_dir=/data/PXC/redo innodb_file_per_table=1 wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so wsrep_cluster_name=pxc-cluster wsrep_cluster_address=gcomm://192.168.1.200,192.168.1.111,192.168.1.112 wsrep_node_name=pxc01 wsrep_node_address=192.168.1.200 wsrep_sst_method=xtrabackup-v2 wsrep_sst_auth=pxc:123456 pxc_strict_mode=ENFORCING default_storage_engine=InnoDB innodb_autoinc_lock_mode=2
第二个节点
wsrep_node_name=pxc2 wsrep_node_address=192.168.1.111
第三个节点
wsrep_node_name=pxc3 wsrep_node_address=192.168.1.112
4. 修改mysql环境变量
export PATH=/usr/local/mysql/bin:$PATH:/usr/local/xtrabackup/bin
5.开始部署
各个节点分别初始化数据库
mysqld --defaults-file=/data/PXC/my.cnf --initialize
启动第一个节点
mysqld_safe --defaults-file=/data/PXC/my.cnf --wsrep-new-cluster &
在第一个节点修改密码,创建复制用户
--修改密码 root@(none)>set password='123456'; --创建一个SST用户 GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'pxc'@'localhost' IDENTIFIED BY '123456';
启动节点#二节点和三节点不要同时启动,待二节点同步完成后再启动三节点
mysqld_safe --defaults-file=/data/PXC/my.cnf &
登陆验证:
root@mysqldb 21:49: [(none)]> show status like 'wsrep_cluster_%'; +--------------------------+--------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------+ | wsrep_cluster_weight | 3 | | wsrep_cluster_conf_id | 15 | | wsrep_cluster_size | 3 | | wsrep_cluster_state_uuid | b813dad6-298a-11eb-a1a0-ff3a44db33c5 | | wsrep_cluster_status | Primary | +--------------------------+--------------------------------------+
PXC 5.7集群参数具体描述
wsrep_cluster_name 指定群集的逻辑名称。对于群集中的所有节点,它必须相同。 wsrep_cluster_address 指定群集中节点的IP地址。 wsrep_node_name 指定每个单独节点的逻辑名称。如果未指定此变量,则将使用主机名称。 wsrep_node_address 指定该特定节点的IP地址。 wsrep_sst_method 默认情况下,Percona XtraDB集群使用Percona XtraBackup进行状态快照传输(SST)。
强烈建议设置wsrep_sst_method=xtrabackup-v2。
这种方法需要用户在初始节点上创建SST用户。用wsrep_sst_auth变量提供SST用户凭据。 wsrep_sst_auth 必须在引导第一个节点时创建此用户 并为其提供必要的权限:
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'passw0rd'; mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost'; mysql> FLUSH PRIVILEGES; pxc_strict_mode 默认情况下PXC Strict模式为 ENFORCING,这将阻止使用Percona XtraDB集群中不受支持的特性 关于这个参数的具体描述可以参考:Percona XtraDB Cluster Strict Mode(PXC 5.7 ) binlog_format Galera只支持行级复制,所以设置binlog_format=ROW。 efault_storage_engine Galera完全支持InnoDB存储引擎。它不能与MyISAM或任何其他非事务性存储引擎正常工作。将此变量设置为default_storage_engine=InnoDB。
innodb_autoinc_lock_mode Galera仅支持InnoDB的交错(2)锁定模式。设置传统(0)或连续(1)锁定模式会导致复制失败,因为未解决的死锁。 将此变量设置为innodb_autoinc_lock_mode=2。
每天进步一点点,多思考,多总结
版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。