xtrabackup-还原恢复数据库

217 阅读1分钟

前提

备份:

周一全备
周二-周五 基于周一全备的 增量

还原:
全备+最后一次增量备份

一还原场景准备:

1 全备

2 master 写入数据

3 master增量备份


4 master写入数据 【为了做数据补偿】

二 从库宕机

1 slave2 停服
2 删除 数据文件 rm -rf /data/mysql/datafile/*


三 从库还原

1 将全备和增量文件拷贝到slave2

  • scp -r xtra_full_2020-06-23-1432 appadmin@'10.224.18.102':/tmp
  • scp -r xtra_incr_2020-06-24-1026 appadmin@'10.224.18.102':/tmp

2 slave2 重演回滚

  • innobackupex --apply-log --redo-only xtra_full_2020-06-23-1432/
  • innobackupex --apply-log /tmp/xtra_full_2020-06-23-1432/ --incremental-dir=/data/xtrabackup/day/increment/xtra_incr_2020-06-24-1026
3 slave2 恢复数据
  • innobackupex --copy-back xtra_full_2020-06-23-1432
4 slave2 修改datafile 权限,并启动mysqld
5 slave2 登录mysql 【使用老账号】,验证数据


四 数据补偿

1 master找到binlog位置节点

mysqlbinlog -vv --base64-output=decode-rows mysql-bin.000008 >/tmp/tail.sql

mysqlbinlog --start-position=571 mysql-bin.000008>/tmp/tail.sql

2 scp /tmp/tail.sql  appadmin@‘slave2’:/tmp

3 slave2 登录mysql

mysql>source /tmp/tail.sql