1、备份dbtest数据库数据

# mysqldump --databases dbtest --master-data=2 --single-transaction >s2.sql

记录当前的库的status信息

# cat s2.sql  |grep CHANGE

-- CHANGE MASTER TO MASTER_LOG_FILE='master.000004', MASTER_LOG_POS=4415;

mysql> show master status ;

| master.000004 |     4415 |      

2、修改数据库的信息

mysql> delete from tb1 where id >2 ;

mysql> insert into tb1 values(11,'nina'),(22,'son');

查看当前的status信息

mysql> show master status ;

| master.000004 |     4835 |

3、模拟数据库被以外的删除并恢复到删除库之前的库信息;

mysql> drop database dbtest ;

当前的数据已经全部丢失,所以需要用库的一个全备份进行还原,然后再用二进制日志信息做时间点还原:

全被数据还原:

# mysql  <s2.sql

接下来做时间还原:

# mysqlbinlog --start-position=4415  --stop-position=4835 master.000004 >/backup/b1.sql

# mysql </backup/b1.sql

检查信息是否已经还原:

mysql> select * from tb1 ;

|    1 | tina  |

|    2 | jason |

|   11 | nina  |

|   22 | son   |

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

还原成功。



总结,使用mysqldump做备份还原的时候,记得使用参数master-data参数:

master-data ={0|1|2}

0  不记录服务器当前的status信息

1 记录change master to信息

2 注释change master to信息

服务器要开启二进制日志;