【Mysql/xtrabackup】主从恢复(高端操作)

一、安装xtrabackup工具

需要在mysql主和从节点安装xtrabackup工具,如未安装,可参考:【Mysql】Xtrabackup备份恢复(Mysql5.6/5.7/8.0)_xtrabackup备份mysql5.7-CSDN博客

说明:使用xtrabackup恢复mysql主从,最好当前用户使用mysql启动进程用户,避免后续修改权限等问题

本文章用于mysql数据量大情况,其他简单方法恢复主从,请访问:【Mysql】主从不一致恢复(详细简单操作)_mysql 主从同步断开恢复-CSDN博客

二、备份主库数据

bash 复制代码
#登录mysql主节点
xtrabackup --defaults-file=${my_cnf} --user=${user} --password=${passwd} --host=${host} --port=${port} --compress-threads=8 --backup --stream=xbstream --parallel=4 | gzip > ${backup}/${date}/mysqlsql.xb.gz

${my_cnf}:指定my.cnf路径

${user}:指定mysql用户

${passwd}:指定mysql用户密码

${host}:指定mysql登录节点,在mysql本节点备份就是127.0.0.1

${port} :指定mysql端口

{backup}/{date}/mysqlsql.xb.gz:指定备份数据mysqlsql.xb.gz的路径

三、将主库备份的数据拷贝到从库

bash 复制代码
scp mysqlsql.xb.gz 用户@从节点ip:路径

四、解压备份数据并preparerg过程

bash 复制代码
#解压
gzip -d -c mysqlsql.xb.gz | xbstream -x -v -C ${dir}
#prepareg过程
xtrabackup --defaults-file=${my_cnf} --user=${user} --password=${passwd} --host=${host} --port=${port} --prepare --target-dir=${dir}

${my_cnf}:指定my.cnf路径

${user}:指定mysql用户

${passwd}:指定mysql用户密码

${host}:指定mysql登录节点,在mysql本节点备份就是127.0.0.1

${port} :指定mysql端口

${dir}:指定解压路径

五、停掉从节点mysql进程

bash 复制代码
#查看mysql进程,获取到pid
ps -ef | grep mysql
#kill掉mysql进程
kill -9 PID号

六、将从节点的mysql数据存储目录和日志存储目录备份

bash 复制代码
#备份:mysql数据存储路径
#使用mv命令将数据目录改名来实现备份
mv mysql存储路径 mysql存储路径.bak
#再创建存储路径,注意权限关系
mkdir mysql存储路径


#备份:mysql日志存储路径
mv 日志路径 日志路径.bak
mkdir 日志路径

七、将解压的数据导入到从节点的数据存储目录

bash 复制代码
xtrabackup --defaults-file=${my_cnf} --user=${user} --password=${passwd} --host=${host} --port=${port} --copy-back --datadir=${mydata} --target-dir=${dir}

${my_cnf}:指定my.cnf路径

${user}:指定mysql用户

${passwd}:指定mysql用户密码

${host}:指定mysql登录节点,在mysql本节点备份就是127.0.0.1

${port} :指定mysql端口

${mydata}:指定mysql存储路径

${dir}:指定解压路径

八、启动从节点mysql

九、配置主从

进入从节点的mysql数据存储目录,里面有个xtrabackup_info,记录这个这俩个值,用于配置主从

进入从节点mysql配置主从:

bash 复制代码
#master_log_file和master_log_pos对应xtrabackup_info里面的值
change master to master_host='主节点ip',master_port=端口,master_user='用户名',master_password='密码',master_log_file='mysql_bin.000017',master_log_pos=157;

#开始主从
start slave;

#查看主从,查看Slave_IO_Running和Slave_SQL_Running是否都为yes
show slave status\G
相关推荐
Lonely 净土4 小时前
Linux 运维文件写入操作
linux·运维·服务器·文件管理
飞英思特无线充电5 小时前
严苛场景巡检机器人的无线补能设计:点位、BMS、认证与运维边界
运维·机器人
Jimmy_jimi6 小时前
利用nginx代理完成url重定位
运维·nginx
liuyicenysabel6 小时前
多服务上线日记三:
运维·服务器·笔记·学习
夜雪一千7 小时前
MySQL 全局锁是什么?原理、风险、备份踩坑完整实战
android·mysql·adb
一只鹿鹿鹿7 小时前
大数据中心安全系统解决方案(Word文件)
大数据·运维·物联网·安全·政务
领创工作室10 小时前
GitHub Workflows 全面解析:从核心概念到开源实现
运维·github
吕海洋10 小时前
目前可用的docker源2026.08
运维·docker·容器
程序员夏洛11 小时前
MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
数据库·mysql
fb_1234511 小时前
Linux运维封神|SELinux详解+CentOS7启动原理+Root密码重置+开机故障排查实战
linux·运维·服务器