MySql恢复误删的表或数据(不完全恢复)
来源:互联网 发布:三国群英传辅助软件 编辑:程序博客网 时间:2024/05/17 01:52
一:实验目的
利用mysqldump全备及二进制日志恢复误删的表或数据(不完全恢复)
二:实验步骤
2.1:准备测试数据
use test;mysql> show tables;+----------------+| Tables_in_test |+----------------+| t || t3 || t4 || t5 |+----------------+4 rows in set (0.00 sec)mysql> create table t6(id int);Query OK, 0 rows affected (0.01 sec)mysql> insert into t6 values(1);Query OK, 1 row affected (0.00 sec)mysql> commit;Query OK, 0 rows affected (0.00 sec)mysql> insert into t6 values(2);Query OK, 1 row affected (0.00 sec)mysql> commit;Query OK, 0 rows affected (0.00 sec)mysql> delete -> from t6 -> where id=1;Query OK, 1 row affected (0.00 sec)mysql> insert into t6 values(3);Query OK, 1 row affected (0.00 sec)mysql> insert into t6 values(4);Query OK, 1 row affected (0.01 sec)mysql> commit;Query OK, 0 rows affected (0.00 sec)mysql> select * -> from t6;+------+| id |+------+| 2 || 3 || 4 |+------+3 rows in set (0.00 sec)mysql> drop table t6;Query OK, 0 rows affected (0.01 sec)mysql> select * -> from t6;ERROR 1146 (42S02): Table 'test.t6' doesn't exist
2.2:恢复
2.2.1:用最近的一个全备恢复
[root@target_pc ~]# mysql -u root -p test< /backup/databasefile/database_test_201410081042.bakEnter password: --查看此时数据库情况:mysql> use test;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+----------------+| Tables_in_test |+----------------+| t || t3 || t4 || t5 |+----------------+4 rows in set (0.00 sec)看到,此时还没还原t6。
2.2.2:用二进制日志进行恢复
mysql> show binary logs;
+----------------+-----------+
| Log_name | File_size |
+----------------+-----------+
| log-bin.000006 | 120 |
| log-bin.000007 | 9609 |
| log-bin.000008 | 120 |
| log-bin.000009 | 4904 |
+----------------+-----------+
4 rows in set (0.00 sec)
全备是在log-bin.000007前进行的,所以这里需要恢复二进制日志文件log-bin.000007,log-bin.000008,log-bin.000009
--表t6信息是在log-bin.000009里
2.2.2.1:先恢复log-bin.000007,log-bin.000008
[root@target_pc ~]# mysqlbinlog /var/lib/mysql/log-bin.000007 | mysql -u root -p
Enter password:
[root@target_pc ~]# mysqlbinlog /var/lib/mysql/log-bin.000008 | mysql -u root -p
Enter password:
2.2.2.2:恢复log-bin.000009
2.2.2.2.1:查看log-bin.000009具体内容
--这里只显示关于t6表的内容:
+----------------+------+-------------+-----------+-------------+----------------------------------------------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+----------------+------+-------------+-----------+-------------+----------------------------------------------------------------------------------------------------+
| log-bin.000009 | 4599 | Query | 1 | 4696 | use `test`; create table t6(id int) |
| log-bin.000009 | 4696 | Query | 1 | 4775 | BEGIN |
| log-bin.000009 | 4775 | Query | 1 | 4873 | use `test`; insert into t6 values(1) |
| log-bin.000009 | 4873 | Xid | 1 | 4904 | COMMIT /* xid=202 */ |
| log-bin.000009 | 4904 | Query | 1 | 4983 | BEGIN |
| log-bin.000009 | 4983 | Query | 1 | 5081 | use `test`; insert into t6 values(2) |
| log-bin.000009 | 5081 | Xid | 1 | 5112 | COMMIT /* xid=210 */ |
| log-bin.000009 | 5112 | Query | 1 | 5191 | BEGIN |
| log-bin.000009 | 5191 | Query | 1 | 5290 | use `test`; delete
from t6
where id=1 |
| log-bin.000009 | 5290 | Xid | 1 | 5321 | COMMIT /* xid=212 */ |
| log-bin.000009 | 5321 | Query | 1 | 5400 | BEGIN |
| log-bin.000009 | 5400 | Query | 1 | 5498 | use `test`; insert into t6 values(3) |
| log-bin.000009 | 5498 | Xid | 1 | 5529 | COMMIT /* xid=213 */ |
| log-bin.000009 | 5529 | Query | 1 | 5608 | BEGIN |
| log-bin.000009 | 5608 | Query | 1 | 5706 | use `test`; insert into t6 values(4) |
| log-bin.000009 | 5706 | Xid | 1 | 5737 | COMMIT /* xid=214 */ |
| log-bin.000009 | 5737 | Query | 1 | 5852 | use `test`; DROP TABLE `t6` /* generated by server */ |
+----------------+------+-------------+-----------+-------------+----------------------------------------------------------------------------------------------------+
64 rows in set (0.00 sec)
2.2.2.2.2:恢复t6表删除数据前的数据
[root@target_pc ~]# mysqlbinlog /var/lib/mysql/log-bin.000009 --stop-position='5112' | mysql -u root -p
Enter password:
此时,t6有1,2两条数据
mysql> select *
-> from t6;
+------+
| id |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
2.2.2.2.3:跳过删除语句,恢复剩下的几条插入语句
[root@target_pc ~]# mysqlbinlog /var/lib/mysql/log-bin.000009 --start-position='5400' --stop-position='5737' | mysql -u root -p
Enter password:
此时:
mysql> select *
-> from t6;
+------+
| id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
+------+
4 rows in set (0.00 sec)
2.2.2.2.4:剩下的是drop table语句,就不恢复了
如果drop table 后有别的数据库DML操作,继续恢复即可。
--本篇文章参考自: http://wenku.baidu.com/link?url=-oWg11CKbEy0jvRec1IxLg4eiR2jRkZRY7cKxkakCSOkGEZqbX5nmG7om4IMZCi-CAE48jah4s_mZNf433roacNu-a61EMxQlFqL5wsfl67
- MySql恢复误删的表或数据(不完全恢复)
- 利用日志挖掘 oracle 不完全恢复 恢复误删除的表/数据/视图等
- 不完全数据恢复
- mysql 恢复误删数据的方法
- .模拟状态为active的日志损坏的数据恢复实验(不完全恢复)
- RMAN的不完全恢复
- ORACLE的不完全恢复
- mysql 误删数据恢复
- mysql 恢复误删数据
- mysql误删数据的恢复(淘宝技术团队)
- mysql的数据恢复
- Oracle恢复误删的数据或表,解除锁定SQL或table
- Oracle恢复误删的数据或表,解除锁定SQL或table
- Oracle不完全恢复误删除的数据库表
- RMAN的不完全恢复(归档模式)
- mysql 表数据恢复
- 【不完全恢复】
- 基于SCN的不完全恢复
- C++实现RTMP协议发送H.264编码及AAC编码的音视频
- 后置递增和递减
- 通过成员变量地址获取结构体地址
- 免费轻量级网页播放器f4player, flv, f4v, mp4, stream, live stream, subscribed CDN
- 64位ubuntu安装N64模拟器mupen64
- MySql恢复误删的表或数据(不完全恢复)
- Java实现验证码
- 跟我一起学extjs5(35--单个模块的设计[3根据类的标注自动生成数据])
- linux简单笔记3
- flume 日志导入elasticsearch
- Ubuntu升级:从12.10到14.04(LTS)
- ios7禁止屏幕旋转,强制竖屏
- PHP学习系列(1)——字符串处理函数(1)
- CDialogBar应用