MySQL--Percona-XtraDB-Cluster使用xtrabackup来添加节点
虽然PXC支持在线增加群集节点,但是目前尚未解决wsrep_sst_method=xtrabackup 或wsrep_sst_method=mysqldump时报错的问题,因此尝试手动完成xtrabackup备份和恢复并添加到群集节点。
场景:
有三台干净的CentOS 6的服务器,IP配置为:192.168.166.169,192.168.166.170,192.168.166.171,准备搭建三节点的Percona XtraDB Cluster,目前192.168.166.169,192.168.166.170已加入到群集,准备将192.168.166.171加入到群集中。
192.168.166.169的wsrep_node_name为pxc1,
192.168.166.170的wsrep_node_name为pxc2,
192.168.166.171的wsrep_node_name为pxc3,
============================================
首先在服务器192.168.166.170上备份,使用galera-info来获取备份时的群集序列号:
/usr/bin/innobackupex --defaults-file="/etc/my.cnf" \ --host="localhost" \ --port=3306 \ --user="sstuser" \ --password="s3cret" \ --socket="/var/lib/mysql/mysql.sock" \ --galera-info \ "/pxc_backup/"
将备份复制到192.168.166.171上,切换到备份目录下,执行恢复:
innobackupex --apply-log ./
恢复完成后,可以看到一个xtrabackup_galera_info,该文件中存放备份时的群集序列号
本次demo中xtrabackup_galera_info数据为:
5f3c567e-033f-11e6-a67c-67e2991c9c84:13
从192.168.166.169或192.168.166.170复制文件grastate.dat到192.168.166.171上
默认rpm安装下,grastate.dat路径为:/var/lib/mysql
然后在192.168.166.171上修改grastate.dat文件中的值为xtrabackup_galera_info数据:
# GALERA saved state version: 2.1 uuid: 5f3c567e-033f-11e6-a67c-67e2991c9c84 seqno: -1 safe_to_bootstrap: 0
修改文件mysql数据目录的权限
chown -R mysql:mysql /var/lib/mysql
编辑mysql配置文件/etc/my.cnf
然后分别到192.168.166.169和192.168.166.170上执行下面命令来查看各节点上保存的最小序列号:
show global status like 'wsrep_local_cached_downto';
假设192.168.166.170上的最小序列号低于xtrabackup_galera_info数据,则证明可以利用192.168.166.170来做增量同步,而192.168.166.170的wsrep_node_name为pxc2,因此启动pxc3节点的脚本为:
service mysql start --wsrep_sst_donor=pxc2
启动成功:
ERROR! MySQL (Percona XtraDB Cluster) is not running, but lock file (/var/lock/subsys/mysql) exists Starting MySQL (Percona XtraDB Cluster).... SUCCESS!
登录MySQL查看状态:
show status like 'wsrep%';
插入测试数据验证群集同步是否正常。
============================================
赶班车,走人,周末快乐
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2014-05-05 SQL SERVER 2014--学习笔记1