转载请务必保留超链接:原文链接
简介:
Percona XtraDB集群是MySQL的数据库集群解决方案。它确保高可用性,防止停机和数据丢失,并为不断增长的环境提供线性可扩展性。
Percona XtraDB Cluster(PXC)是基于Galera 协议的高可用方案, Galera是Codership提供的多主数据同步复制机制,可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据一致性。
PXC的原理
PXC会使用大概是4个端口号:
3306 数据库对外服务的端口号
4444 SST全量传输,用于新增节点(类似xtrbackup物理备份后再恢复的过)
4567 组成员之间进行沟通的一个端口号
4568 传输IST用的;相对于SST来说的一个增量。
PXC集群提供的特如下:
1. 同步复制
2.多主复制
3.真正的并行复制
4.数据一致性
5.支持 ProxySQL
本次实验环境介绍:
1、查看系统防火墙是否已经关闭
systemctl status firewalld.service
Active: inactive (dead) //当前防火墙已经关闭
2、查看 selinux 是否已经关闭
cat /etc/selinux/config
SELINUX=disabled //当前selinux已经关闭
3、安装软件依赖包
yum install –y perl-DBD-MySQL.x86_64 perl-IO-Socket-SSL.noarch socat.x86_64 nc
yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
4、到官网 https://www.percona.com/downloads/XtraBackup/LATEST/ 下载Redhat7版本中percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm 到 /opt/mysql/ 目录下, PXC-5.7.19 需要 xtrabackup-2.4.4 or higher
rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm
xtrabackup --version //查看xtrabakup是否安装
5、下载 PXC二进制安装包 到 /opt/mysql/ 目录下
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
tar zxvf Percona-XtraDB-Cluster-5.7.19-rel17-29.22.3.Linux.x86_64.ssl101.tar.gz //解压
mv Percona-XtraDB-Cluster-5.7.19-rel17-29.22.3.Linux.x86_64.ssl101 pxc-5.7.19 //重命名
6、在 /usr/local/ 目录下创建MySQL的软链并且给用户授权
ln -s /opt/mysql/pxc-5.7.19 mysql
chown -R mysql:mysql mysql
7、安装MySQL
创建用户和用户组
groupadd mysql
useradd -g mysql -d /usr/local/mysql -s /sbin/nologin -M mysql
cd /usr/local
chown -R mysql:mysql mysql
创建MySQL的基本目录
mkdir /data/mysql/mysql3306/{data,logs,tmp} -p
chown -R mysql:mysql /data/*
MySQL配置文件 my.cnf 添加 PXC 参数
default_storage_engine=Innodb
innodb_locks_unsafe_for_binlog=1
innodb_autoinc_lock_mode=2
wsrep_cluster_name=pxc_bin #集群名称
wsrep_cluster_address=gcomm://192.168.1.28,192.168.1.29,192.168.1.30 # 集群节点的所有ip
wsrep_node_address=192.168.1.28 #当前节点的ip
wsrep_provider=/usr/local/mysql/lib/libgalera_smm.so
wsrep_sst_method=xtrabackup-v2 #采用什么方式复制数据, 支持xtrabackup , rsync, mysqldump
wsrep_sst_auth=binbin:123456abc #sst模式需要的用户名和密码
初始化
cd /usr/local/mysql
./bin/mysqld --defaults-file=/etc/my.cnf --initialize
添加MySQL环境变量
echo $PATH
echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
source /ect/profile
启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
/etc/init.d/mysql start 启动报错,找不到 my_print_defaults, 如下图:
解决办法: vim /etc/init.d/mysql
把 basedir定义为: basedir=/usr/local/mysql/
把datadir定义为:datadir=/data/mysql/mysql3306/data/
获取密码:
grep -i password /data/mysql/mysql3306/data/error.log
登录: mysql -S /tmp/mysql3306.sock -p
修改密码: alter user user() identified by '123456abc';
#创建全量写集传输用户
mysql@pxc1> CREATE USER 'binbin'@'localhost' IDENTIFIED BY '123456abc';
mysql@pxc1> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'binbin'@'localhost';
mysql@pxc1> flush privileges;
PXC第一个节点的启动:
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --wsrep-new-cluster &
centos7 下不能使用 /etc/init.d/mysql bootstrap-pxc 启动,如下:
启动完毕的确认:
netstat -an|grep -E "3306|4444|4567|4568" #检查端口是否被监听
/etc/init.d/mysql status #查看状态
mysql>show global status like 'wsrep%';
|wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
node2和node3节点的搭建这里就不描述了;
注:node2和node3节点的 MySQL 配置文件需要修改下面的这两个参数
server-id 的标识
wsrep_node_address 参数为Cluster集群节点的当前机器的IP地址
node2和node3节点的启动:
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf &
netstat -an|grep -E "3306|4444|4567|4568" #检查端口是否被监听
/etc/init.d/mysql status #查看节点状态
网友评论