mysql时间点恢复工具_MySQL实现基于时间点的恢复

前期说明:我每天指定了数据库凌晨1点做全备,这天有人一不小心,删除了某个数据库里面的一个表,需要恢复,怎么弄?

1  确认log_bin是否打开

mysql> show global variables like 'log_bin';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| log_bin       | ON    |

+---------------+-------+

1 row in set (0.00 sec)

如果没有开启在配置文件里my.cnf,添加

[mysqld]

log-bin=mysql-bin

2  在test库里面新建一个表upl

use test;

create table upl;

插入数据

insert into upl values (1,'tom'),(2,'mary'),(3,'bean');

查看数据

mysql> select * from upl;

+------+------+

| id   | user |

+------+------+

|    1 | tom  |

|    2 | mary |

|    3 | bean

3 在时间点a备份数据库test

mysqldump -uroot -p --databases test > /data/test.sql

4 时间点b再次登录数据库,创建表test.t2

mysql> create table t2 (a int);

Query OK, 0 rows affected (0.00 sec)

mysql> insert into t2 values(10);

Query OK, 1 row affected (0.02 sec)

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

mysql> select * from t2;

+------+

| a    |

+------+

|   10 |

+------+

1 row in set (0.00 sec)

5 在时间点c删除upl,t2

drop table upl;

drop table t2;

6 要求恢复到时间点b (upl和t2同时存在)

先恢复全库  mysql -uroot -p < /data/test.sql

登录mysql发现upl表已经存在了

挖掘log-bin日志  mysqlbinlog --start-datetime='2016-10-21 14:46:10' --stop-datetime='2016-10-21 14:50:35'  mysql-bin.000001 > recovery.sql

说明:这两个时间点只能取大概的时间,不能确定精确的时间,可以写上面数据库备份完的那个时间,结束时间就写删除某个表的时间(大概) 这个mysql-bin.000001 日志文件选择最新的那个(距离删除时间最近的)

然后再把这个recovery.sql倒入到数据库里

mysql -uroot -p < recovery.sql

再次登录mysql数据库,发现t2也已经存在了,到此全部恢复完成!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值