网站首页 > 基础教程 正文
概述
前面已经介绍了PXC集群方面的一些理论内容,今天主要简单介绍一下PXC集群如何部署以及测试,仅供参考。
文末为上篇链接。
PXC集群环境说明:
1、环境准备
1.1 、修改本地hosts
cat >> /etc/hosts <<EOF
xx.142 pxc_node1
xx.143 pxc_node2
xx.144 pxc_node3
EOF
1.2、禁用防火墙和selinux
systemctl stop firewalld && systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
1.3、配置阿里源
for i in /etc/yum.repos.d/*.repo;do cp $i ${i%.repo}_bak;done
rm -rf /etc/yum.repos.d/*.repo
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
yum clean all && yum makecache
2、三个节点均安装PXC(保证服务器没有装MySQL)
下载地址:https://www.percona.com/downloads/percona-release/
如果有外网环境直接yum就可以了,如果无外网环境,那么就需要到官网:
https://www.percona.com/downloads/Percona-XtraDB-Cluster-LATEST/
去把依赖包一个一个下载下来,再手动安装。
--依赖安装
yum -y groupinstall Base Compatibility libraries Debugging Tools Dial-up Networking suppport Hardware monitoring utilities Performance Tools Development tools
--组件安装
yum -y install https://downloads.percona.com/downloads/percona-release/percona-release-1.0-25/redhat/percona-release-1.0-25.noarch.rpm
yum -y update percona-release
--pxc安装
yum -y install Percona-XtraDB-Cluster-57
3、集群配置
3.1、在所有节点修改root密码并配置SST认证账号
systemctl start mysqld
grep 'password' /var/log/mysqld.log
mysql -uroot -p
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxx34';
> GRANT ALL PRIVILEGES ON *.* TO root@'%' identified by 'xxx234';
> CREATE USER 'sst'@'localhost' IDENTIFIED BY 'xxx234';
> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sst'@'localhost';
> FLUSH PRIVILEGES;
systemctl stop mysqld
3.2、修改所有节点的配置文件
# vim /etc/percona-xtradb-cluster.conf.d/wsrep.cnf
# 三个节点需分别修改server-id、wsrep_node_name、wsrep_node_address、wsrep_sst_auth
================================================================================================
[mysqld]
#PXC集群中MySQL实例的唯一ID,不能重复,必须是数字
server-id=1
#当前节点的名称
wsrep_node_name=pxc_node1
#当前节点的IP
wsrep_node_address=xx.142
#PXC集群的名称
wsrep_cluster_name=pxc_cluster
#同步使用的帐户
wsrep_sst_auth= sst:xx234
#启动时要连接的群集节点的地址
wsrep_cluster_address=gcomm://xx.142,xx.143,xx.144
# Path to Galera library
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
#同步方法(mysqldump、rsync、xtrabackup)
wsrep_sst_method=xtrabackup-v2
#同步严厉模式
pxc_strict_mode=ENFORCING
#基于ROW复制(安全可靠)
binlog_format=ROW
#默认引擎
default_storage_engine=InnoDB
#主键自增长不锁表
innodb_autoinc_lock_mode=2
# 用于并行应用Galera写集的从属线程数
wsrep_slave_threads= 8
#如果设置为ON(默认为OFF),则会记录群集中发生冲突的MDL以及InnoDB锁的详细信息
wsrep_log_conflicts = ON
================================================================================================
4、启动pxc并测试
4.1、启动第一个节点
停止mysql服务,选择一个node作为名义上的master,启动第一个节点以前,其节点的配置文件里面,不能配置其它节点的ip,即 wsrep_cluster_address=gcomm:// 这样就行了,否则会导致启动报错。待集群启动后,再修改它的配置文件,把其他节点的ip补充上去。
集群关闭之后,再启动,谁做第一个节点谁就执行/etc/init.d/mysqld bootstrap-pxc。
如果最后关闭的PXC节点是安全退出的,那么下次启动要最先启动这个节点,而且要以主节点启动 如果最后关闭的PXC节点不是安全退出的,那么要先修改/var/lib/mysql/grastate.dat 文件, 把其中的safe_to_bootstrap属性值设置为1, 再安装主节点启动。
除了名义上的master之外,其它的node节点只需要启动mysql即可。
systemctl start mysql@bootstrap.service
4.2、启动其他节点
systemctl start mysql
5、pxc集群测试
测试过程如下:
结果如下:
6、PXC集群管理
6.1、日常维护
--查看节点数:
show global status like 'wsrep_cluster_size';
--查看集群状态:
show global status like 'wsrep_local_state_comment';
--查看当前节点状态:
show global status like 'wsrep_cluster_status';
--通过查看4567 端口确认集群是否启动:
netstat -plantu | grep mysqld
--集群关闭:所有节点都用
/etc/init.d/mysql stop
--节点重启
1)第一个节点用:
systemctl start mysql@bootstrap.service
2)其他节点用:
systemctl start mysql
6.2、wsrep相关参数检查
集群完整性检查:
节点状态检查:
复制健康检查:
检测慢网络问题:
冲突或死锁的数目:
篇幅有限,今天主要介绍PXC集群部署方面,后面再介绍怎么用Haproxy来做PXC集群的负载均衡。
猜你喜欢
- 2024-12-02 GitHub精选 | 后台权限管理系统(基于Node.js)
- 2024-12-02 Node.js 的 5 个常见服务器漏洞
- 2024-12-02 Node-RED教程 – 22 modbus读取数据写入mysql并可查询显示曲线图
- 2024-12-02 MySQL 同步复制及高可用方案总结
- 2024-12-02 如何实现用prometheus+grafana实时监控mysql数据库?
- 2024-12-02 (完结无密) Vue3+Uni+Node+MySQL 从零实现跨端小程序的全栈应用
- 2024-12-02 Mysql-cluster搭建
- 2024-12-02 Mysql高可用方案--PXC
- 2024-12-02 Vue整合Node.js,直连Mysql数据库进行CURD操作
- 2024-12-02 mysql实现高可用架构之MHA概念篇
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)