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%';

插入测试数据验证群集同步是否正常。

============================================

赶班车,走人,周末快乐

 

posted on   笑东风  阅读(1036)  评论(2编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2014-05-05 SQL SERVER 2014--学习笔记1

导航

点击右上角即可分享
微信分享提示