MySQL 数据恢复 全备份恢复以及增量恢复 (以手残删库为例)
数据恢复原理图
测试环境 MySQL5.5
1 首先新建数据库 lampol 数据表 test
create database lampol;
use lampol;
create table test (id int(10),name varchar(10));
2 插入数据信息
insert into test values(1,'lampol1');
insert into test values(2,'lampol2');
3 插入后的信息
mysql> select * from lampol.test;
+------+---------+
| id | name |
+------+---------+
| 1 | lampol1 |
| 2 | lampol2 |
+------+---------+
4 开始模拟凌晨的全备份
mysqldump -uroot -proot --flush-logs --single-transaction --master-data=2 lampol > /shell/test.sql
(1)--flush-logs 刷新切割日志 方便以后恢复增量binlog
(2)--single-transaction InnoDB的存储引擎 MyISAM --lock-all-tables (锁表)
(3)--master-data=2 记录备份的位置binlog日志 及pos
全量备份成功 记录msyql-bin日志 和位置
5 备份之后开始继续插入数据 这些数据不在全备里面
insert into test values(3,'lampol3');
insert into test values(4,'lampol4');
6执行drop database lampol;
数据库被删除之后
开始恢复
1 首先停止对外访问;停掉web服务器即可 开始准备恢复
flush logs 刷新binlog日志 否则后期导入的全量可能会写进binlog影响恢复
2 开始恢复全量备份 创建删除的数据库
mysql -uroot -proot lampol<test.sql
全量已经被恢复到数据库了;后来插入的只能用增量来恢复。
3 增量binlog恢复 进test.sql 找到binlog位置
取出binlog 转化成sql语句 mysqlbinlog mysql-bin.000012 > /shell/bin.sql
进入bin.sql 找到 drop database lampol;这一句 删除此句
把bin.sql导入到数据库
mysql -uroot -proot lampol<bin.sql
恢复成功 还有很多不足之处 以后在慢慢完善
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341