利用MySQL 二进制日志恢复数据库

今天无意当中误操作了自己机器上数据库中的一个表。本来也没什么大事。但是后来一想万一遇到这种情况我该什么办?打开了手册看了一下,如果在启动MySQL时启用了bin日志,则可以利用日志来恢复。

 

MySQL的二进制日志记录了对数据库进行修改的所有SQL语句。当然在恢复之前你需要事先知道当前的MySQL的二进制日志的位置和名称,默认情 况下,MySQL会将这个文件直接放在数据目录下。但是你可以在启动服务器时使用--login-path来改写这个值。当然你也可以在配置文件中配置该 选项。可以使用下列命令来查看:

进入MySQL控制台后:

mysql> SHOW MASTER STATUS

直接在SHELL中执行:

shell> mysql -u root -p -E -e “SHOW MASTER STATUS”

 

1、恢复到数据库的某个点

 

使用mysqlbinlog的–start-date和–stop-date参数来指定一个点。如:

 

mysqlbinlog –stop-date="2005-04-20 9:59:59″ /var/log/mysql/bin.123456 | mysql -u root -p

 

如果不知道具体出错的时间或无法确定,可以查看日志来决定一个合理的时间:

 

mysqlbinlog /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql

 

2、从指定的LOG恢复(从特定位置恢复)是指你可以从指定的日志的某个位置恢复。

如何确定位置和上面是差不多的。

 

SHELL>mysqlbinlog –start-date="2005-04-20 9:55:00″ /
–stop-date="2005-04-20 10:05:00″ /
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql


然后可以打开那个文本找到你不想执行的SQL语句,记录下它的位置。然后:

 

shell> mysqlbinlog –stop-position="368312″ /var/log/mysql/bin.123456 /
| mysql -u root -p


将记录恢复到指定位置之前的状态。

 

shell> mysqlbinlog –start-position="368315″ /var/log/mysql/bin.123456 /
| mysql -u root -p

 

恢复从这个位置开始往后所执行的所有SQL语句。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值