大家好,我是腾意。

一、介绍

1. 官方文档

8.0版本:

https://docs.percona.com/percona-server/8.0/index.html

https://docs.percona.com/percona-xtradb-cluster/8.0/

5.7版本:

https://docs.percona.com/percona-server/5.7/index.html

https://docs.percona.com/percona-xtradb-cluster/5.7/

2. 什么是 PXC

PXC 是一套 MySQL 高可用集群解决方案,与传统的基于主从复制模式的集群架构相比, PXC 最突出特点就是解决了数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。PXC 最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能非常完美的保证 MySQL 集群的数据强一致性。

3. PXC 的优缺点

优点

  • 服务高可用。
  • 数据同步复制(并发复制),几乎无延迟。
  • 多个可同时读写节点,可实现写扩展,不过最好事先进行分库分表,让各个节点分别写不同的表或者库,避免让 galera 解决数据冲突。
  • 新节点可以自动部署,部署操作简单。
  • 数据严格一致性,尤其适合电商类应用。
  • 完全兼容 MySQL。

缺点

  • 复制只支持InnoDB 引擎,其他存储引擎的更改不复制。
  • 写入效率取决于节点中最弱的一台,因为 PXC 集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功。
  • 所有表都要有主键。
  • 不支持 LOCK TABLE 等显式锁操作。
  • 锁冲突、死锁问题相对更多。

4. PXC 与 Replication 的区别

Replication PXC
数据同步是单向的,master 负责写,然后异步复制给 slave;如果 slave 写入数据,不会复制给 master 数据同步时双向的,任何一个 mysql 节点写入数据,都会同步到集群中其它的节点
异步复制,从和主无法保证数据的一致性 同步复制,事务在所有集群节点要么同时提交,要么同时不提交

5. PXC 常用端口

  • 3306:数据库对外服务的端口号。
  • 4444:请求 SST 的端口。
  • 4567:组成员之间进行沟通的一个端口号。
  • 4568:用于传输 IST。
  • SST(State Snapshot Transfer): 全量传输
  • IST(Incremental state Transfer):增量传输

二、单节点安装Percona MySQL数据库

1. 离线安装Percona

上传rpm文件,进入RPM安装文件目录,执行下面的脚本

yum localinstall *.rpm

管理MySQL服务

systemctl start mysqld
systemctl stop mysqld
systemctl restart mysqld

2. 在线安装Percona

使用yum命令安装

yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
percona-release setup ps57
yum install Percona-Server-server-57

管理MySQL服务

service mysql start
service mysql stop
service mysql restart

3. 开放防火墙端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

4. 修改MySQL配置文件

vi /etc/my.cnf
[mysqld]
character_set_server = utf8
bind-address = 0.0.0.0
#跳过DNS解析
skip-name-resolve
service mysql restart 

5. 禁止开机启动MySQL

chkconfig mysqld off

6. 初始化MySQL数据库

查看MySQL初始密码

cat /var/log/mysqld.log | grep "A temporary password"

修改MySQL密码

mysql_secure_installation

创建远程管理员账户

mysql -u root -p
CREATE USER 'admin'@'%' IDENTIFIED BY 'Abc_123456';
GRANT all privileges ON *.* TO 'admin'@'%';
FLUSH PRIVILEGES;

三、安装PXC集群

1. 删除MariaDB程序包

yum -y remove mari*

2. 开放防火墙端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent

3. 关闭SELINUX

vi /etc/selinux/config

把SELINUX属性值设置成disabled

reboot

4. 离线安装PXC

进入RPM文件目录,执行安装命令

yum localinstall *.rpm
  • 参考第二章内容,修改MySQL配置文件、创建账户等操作

5. 创建PXC集群

停止MySQL服务

修改每个PXC节点的/etc/my.cnf文件(在不同节点上,注意调整文件内容)

server-id=1  #PXC集群中MySQL实例的唯一ID,不能重复,必须是数字
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster  #PXC集群的名称
wsrep_cluster_address=gcomm://192.168.99.151,192.168.99.159,192.168.99.215
wsrep_node_name=pxc1  #当前节点的名称
wsrep_node_address=192.168.99.151  #当前节点的IP
wsrep_sst_method=xtrabackup-v2  #同步方法(mysqldump、rsync、xtrabackup)
wsrep_sst_auth= admin:Abc_123456  #同步使用的帐户
pxc_strict_mode=ENFORCING  #同步严厉模式
binlog_format=ROW  #基于ROW复制(安全可靠)
default_storage_engine=InnoDB  #默认引擎
innodb_autoinc_lock_mode=2  #主键自增长不锁表

主节点的管理命令(第一个启动的PXC节点)

systemctl start mysql@bootstrap.service
systemctl stop mysql@bootstrap.service
systemctl restart mysql@bootstrap.service

非主节点的管理命令(非第一个启动的PXC节点)

service start mysql
service stop mysql
service restart mysql

查看PXC集群状态信息

show status like 'wsrep_cluster%' ;

6. PXC节点启动与关闭

  • 如果最后关闭的PXC节点是安全退出的,那么下次启动要最先启动这个节点,而且要以主节点启动
  • 如果最后关闭的PXC节点不是安全退出的,那么要先修改/var/lib/mysql/grastate.dat 文件,把其中的safe_to_bootstrap属性值设置为1,再安装主节点启动

版权声明:如无特殊说明,文章均为本站原创,版权所有,转载需注明本文链接

本文链接:http://www.bianchengvip.com/article/MySQL-PXC-install/