一、演示环境说明:
系统CentOS Linux release 7.2.1511 (Core) X_86 64位最小化安装
mysql版本是官方二进制版本5.7.22-22,mysql采用的是二进制安装,单机上开启2个mysql实例,mysql实例要开启定时器event_scheduler=ON. 而且2个mysql实例都要开启Gtid
xtrabackup 采用的是rpm包安装,版本是version 2.4.13
MySQL备份方式采用每天一次全量备份和binlog增量备份
二、模拟删除库,进行数据恢复演示:
提示:当然此处只是演示,严禁生成环境删库,删表模拟,后果你懂得
故障模拟:
线上误删除一个testdb库下的test1_event表,利用当天的mysql的全量备份+当天生成的mysql的binlog文件来恢复数据到误删的表test1_event之前的数据
恢复方式介绍:
官方推荐采用利用mysql binlog方式恢复,生产实践验证官方的这个方式已经是不严谨的做法了(下面的方法是官方推荐的)
故障恢复过程如下:
2.1接收到误删除之前,第一时间确认大概误操作时间
2.2 登录主库查看当前的binlog位置点(要记住此时的binlog文件,后面恢复时会用到)
(root@'mgr01':mysql3306.sock)[testdb]>show master status\G
*************************** 1. row ***************************
File: mysql-bin.000005
Position: 15211
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set: bde7b592-b966-11e9-8c64-000c294f3e61:1-10445
1 row in set (0.00 sec)
2.3最好是flush logs下,让接下来的sql写入到新的binlog文件
2.4定位drop 表语句所在binglog文件的位置点:
[root@mgr01 binlog]# mysqlbinlog -v --base64-output=decode-rows /data/mysql/mysql3306/binlog/mysql-bin.000005|grep -i -C 15 drop
### @1=10422
### @2='tomcat'
### @3='xiaohuahua'
### @4='2019-08-08 14:22:18'
# at 14987<