mysql恢复单表数据(全量备份+binlog备份)

1、在全备中截取建表语句(路径根据自己的修改)

#backup.gz为某一时间点的全量备份,t1为表名
zcat backup.gz | sed -n '/CREATE TABLE `t1` /,/\;/p' > /data/backup/create.sql

2、在全备中提取插入数据语句(路径根据自己的修改)

#backup.gz为某一时间点的全量备份,t1为表名
zcat backup.gz | grep -i 'INSERT INTO `t1`' > /data/backup/insert.sql

3、在binlog备份中提取表数据修改的语句(路径根据自己的修改)

# mysqldump备份时必须带选项--master-data,才能通过下面命令查询
zcat backup.gz | head -n 25 | grep 'CHANGE MASTER TO MASTER_LOG_FILE'
# mysql-bin.000010为对应的日志文件,51893为备份完成后对应的节点位置,这两个数据后面都能用到
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000010', MASTER_LOG_POS=51893;

# 查找binlog最后位置点,用mysqlbinlog解析日志,找到删表之前最后操作的位置点,db1为库名,t1为表名
mysqlbinlog --no-defaults --database=db1 --start-position=51893 --base64-output=decode-rows -vv /var/lib/mysql/mysql-bin.000010 

#获取表数据修改的语句
mysqlbinlog --skip-gtids --database=db1 --start-position=51893 --stop-position=1235082 /var/lib/mysql/mysql-bin.000010 > /data/backup/binlog.sql

4、恢复数据,进入mysql命令界面

use db1;
set sql_log_bin=0;
source /data/backup/create.sql
source /data/backup/insert.sql
commit;
source /data/backup/binlog.sql
set sql_log_bin=1;
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值