您的位置:首页 > 数据库 > MySQL

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

2009-03-02 17:36 483 查看
今天无意当中误操作了自己机器上数据库中的一个表。本来也没什么大事。但是后来一想万一遇到这种情况我该什么办?打开了手册看了一下,如果在启动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语句。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: