mysql基于备份进行drop操作恢复的全部测试流程。

mysql基于备份进行drop操作恢复的全部测试流程。
1,模拟环境添加测试数据:
create database test;
use test;
create table test01(id integer primary key auto_increment,name varchar(30),age integer);
insert into test01(name,age) values("name01",1),("name02",2);
flush logs;
insert into test01(name,age) values("name03",3),("name04",4);
2,基于现有数据进行全备。mysqldump(共4个必须参数)/innobackupex 
mysqldump -h127.0.0.1 -uroot -p123456 --hex-blob --routines --single-transaction --master-data=2 --flush-logs -A > all.sql


3,进行数据修改和drop操作
insert into test01(name,age) values("name05",5),("name06",6);
flush logs;
insert into test01(name,age) values("name07",7),("name08",8)
#进行drop操作
drop table test01;
insert into test01(name,age) values("name09",9),("name10",10);
4,刷新日志并记录位置
flush logs;
mysqlbinlog -v --base64-output=decode-rows binlog.000014 > 14.sql
#位置一定要正确,可以找commit;后最近的at xxxx 确定。
442
5,根据之前的备份确定上次全备之后的所有binlog,进行合并。
备份sql中关键字(通过命令:head -n 30 all.sql 获得):
--CHANGE MASTER TO MASTER_LOG_FILE='binlog.000013', MASTER_LOG_POS=154;
代表备份完成时新生成的binlog,该位置之前的binlog可以删除。


mysqlbinlog --no-defaults binlog.000013 binlog.000014  --stop-position=442 > recovery_bin.log
# --stop-position=442 匹配最后一个文档的位置,与前面的无关,即使设置成1,前面文件mysql-bin.000013也会完整保存。


binlog日志合并规则:
002.sql有drop语句。
1,001.sql 002.sql全部正常显示
2,002.sql 001.sql #只显示001.sql
3,002.sql 001.sql 003.sql  #显示001.sql 003.sql 的合并结果。推测:只能顺序读取,不能倒叙读取。


6,复制binlog和全备到恢复服务器(建议临时新建一个)
scp all.sql recovery_bin.log 192.168.10.210:/tmp/
7,全备进行恢复
mysql -uroot -p123456 -h127.0.0.1 -P3307 < all.sql
8,binlog进行恢复
cat recovery_bin.log | mysql -uroot -p123456 -h127.0.0.1 -P3307  
9,导出表文件:逻辑或表空间方式
mysqldump -uroot -p123456 -h127.0.0.1 -P3307 test test01 > test01.sql
10,恢复的数据进行回传
scp test01.sql 192.168.20.37:/tmp/ 
10,主服务器进行表数据恢复
cd /tmp/
mysql -uroot -p123456 test < test01.sql
恢复完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值