案例
总数据量级500G,正常备份去恢复需要1.5-2小时
1)配置延时3600秒
mysql>CHANGE MASTER TO MASTER_DELAY = 3600;
2)主库
drop database db;
3)怎么利用延时从库,恢复数据?
# #处理的思路:
1)停止SQL线程
mysql> stop slave sql_thread;
2)截取relaylog到误删除之前点
relay-log.info 获取到上次运行到的位置点,作为恢复起点
分析relay-log的文件内容,获取到误删除之前position
模拟故障处:
1)关闭延时
mysql -S /data/3308/mysql.sock
mysql> stop slave;
mysql> CHANGE MASTER TO MASTER_DELAY = 0;
mysql> start slave;
2)模拟数据
mysql -S /data/3307/mysql.sock
source /root/world.sql
use world;
create table c1 select * from city;
create table c2 select * from city;
3)开启从库延时5分钟
mysql -S /data/3308/mysql.sock
show slave status \G
mysql>stop slave;
mysql>CHANGE MASTER TO MASTER_DELAY = 300;
mysql>start slave;
mysql -S /data/3307/mysql.sock
use world;
create table c3 select * from city;
create table c4 select * from city;
4)破坏,模拟删库故障。(以下步骤在5分钟内操作完成。)
mysql -S /data/3307/mysql.sock
drop database world;
5)从库,关闭SQL线程
mysql -S /data/3308/mysql.sock
stop slave sql_thread;
6)截取relay-log
起点:
cd /data/3308/data/
cat relay-log.info
./db01-relay-bin.000002
283
终点:
mysql -S /data/3308/mysql.sock
show relaylog events in 'db01-relay-bin.000002'
db01-relay-bin.000002 | 268047
mysqlbinlog --start-position=283 --stop-position=268047 /data/3308/data/db01-relay-bin.000002 >/tmp/relay.sql
恢复relay.sql
1)取消从库身份
mysql> stop slave;
mysql> reset slave all;
2)恢复数据
mysql> set sql_log_bin=0;
mysql> source /tmp/relay.sql
mysql> use world
mysql> show tables;
##### 方法二
截取主库bin-log 给从库使用
## 第一部分
#----起始点
relay-log.info
mysql-bin.000003
13563
#----终止点
mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.000003 | grep -iC 10 drop
at:27606
mysqlbinlog --start-position=13563 --stop-position=27606 /app/mysql/data/mysql-bin.000003 > /tmp/inc1.sql
# 第二部分
#----起始点
mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.000003 | grep -iC 10 drop
at:27720
#----终止点
停止服务后的文件大小
mysqlbinlog --start-position=27720 --stop-position=90195 /app/mysql/data/mysql-bin.000003 > /tmp/inc2.sql
scp /tmp/inc1.sql 10.0.0.54:/tmp
scp /tmp/inc2.sql 10.0.0.54:/tmp
### 从库
mysql < /tmp/inc1.sql
mysql < /tmp/inc2.sql