大家好,我是腾意。
一、介绍
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/