【MySQL运维】使用备份与binlog实现数据库恢复

基于从库的Xtrabackup全量备份+binlog文件实现数据恢复,由于增量数据是基于binlog进行恢复,所以为了保证备份数据完全,数据库双1参数一定要配置。恢复数据时建议先使用临时的数据库实例进行还原验证,没有问题后再进行生产还原。

一、还原全量数据

1、解压经过LZ4压缩的xtrabackup全量备份(如未压缩可跳过)

lz4_decompress /data/mysql_backup/xmglb/mysqlfull_2021-04-06_3308.xbstream /data/restore_mysql/mysqlfull_2021-04-06_3308

2、解压xtrabackup流备份 

xbstream -x < /data/restore_mysql/mysqlfull_2021-04-06_3308 -C /data/restore_mysql/

3、应用日志并还原备份文件,确保每次执行后有输出"completed OK"字符串 

xtrabackup --defaults-file=/etc/my3333.cnf --prepare --target-dir=/data/restore_mysql/

xtrabackup --defaults-file=/etc/my3333.cnf --move-back --target-dir=/data/restore_mysql/

4、修改权限并启动还原实例 

chown -R mysql. /data/mysql3333/ mysqld_safe --defaults-file=/etc/my3333.cnf &

5、创建测试数据

在恢复完成全量备份后可以在原来实例上手动更新一些标识性数据,比如创建test_restore数据库。这步操作仅用于测试后面进行增量数据时数据是否还原到最新位置,实际还原过程中可跳过该步骤。

 

二、还原binlog

1、确定增量数据起始点 

cat /data/mysql3333/xtrabackup_slave_info 
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000025', MASTER_LOG_POS=887027467;

2、登录还原实例清空从库状态 

mysql > reset slave all;

3、导入binlog 

#导入第一个binlog时注意position信息要正确 
mysqlbinlog --start-position=887027467 /data/mysql_binlog_backup/ops/binlog/mysql-bin.000025 | mysql -udba -p -S /data/mysql3333/mysql.sock 
#导入后续binlog mysqlbinlog  
/data/mysql_binlog_backup/ops/binlog/mysql-bin.000026 | mysql -udba -p -S /data/mysql3333/mysql.sock mysqlbinlog  
/data/mysql_binlog_backup/ops/binlog/mysql-bin.000027 | mysql -udba -p -S /data/mysql3333/mysql.sock

4、验证数据,用于标识的test_restore已经恢复,代表还原正常 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值