需要准备两台Mysql服务器,不要是主从服务器
1.准备数据
提前配置好MYSQL
2.备份数据库
重启MySQL数据库
service mysql restart
进行了一个全备,如下:
[root@skj ~]# mysqldump -uroot -ptest --set-gtid-purged=OFF --master-data=2 --single-transaction -A > /opt/full_$(date +%F).sql
3.新建一个数据库及表
模拟新增数据
mysql> create table t1(id int,name varchar(20));
mysql> insert into t1(id,name) values(1,'php'),(2,'java'),(3,'python');
4.模拟故障删库
模拟故障删库t1
5.查找binlog的起点及终点
在故障的mysql服务器上查看备份的binlog起点
vi /opt/full_2021-05-21.sql
查看binlog终点
mysql> show master status;
mysql> show binlog events in 'master-binlog.000001';
由此可知,binlog的起点是154,终点是825
6.截取binlog起点及终点的日志
[root@skj opt]# mysqlbinlog --skip-gtids --start-position=154 --stop-position=825 /data/mysql/data/master-binlog.000001 > /opt/binlog.sql
7. 临时库上恢复数据库到最新时间点
临时库上恢复全备+binlog,将全备文件及截取的binlog文件恢复到临时库上(另外一台临时服务器上)
[root@skj data]# scp /opt/full_2021-05-21.sql root@192.168.60.13:/opt/
[root@skj data]# scp /opt/binlog.sql root@192.168.60.13:/opt
[root@www opt]# mysql -uroot -ptest
mysql> source /opt/full_2021-05-21.sql;
#现在恢复的没有t1数据库。
mysql> source /opt/binlog.sql;
#恢复新增的数据
mysql> show databases;
mysql> use t1;
Database changed
mysql> select * from t1;