window下使用二进制文件对mysql数据库备份及恢复(再现用户操作)

1,查看二进制日志文件是否启用

mysql>show variables like 'log_bin';

如果未启用,则启用二进制文件(默认是关闭的 )

2,在mysql的配置文件[mysqld]区域加上如下配置

log-error=  #记录错误日志
#log=         #记录所有日志
#log-slow-queries=   #记录慢查询日志
#log-update=             #记录更新
log-bin=                      #二进制日志

以上默认只启用错误日志,和二进制日志,可以指定日志文件名(如log-bin=logBin.log)如果不指定文件名在使用默认文件名(主机名-bin-000001)

3.重启mysql服务(net stop mysql 和 net start mysql)win7下以管理员身份运行command line客户端

到此为止,二进制文件启用成功

4,开始备份数据库

 mysqldump -uroot -p123456 database_name>d:/backup20070713.sql
5,恢复数据库:删除原有数据库,建立数据库,把备份数据库导入

    mysqladmin -uroot -p123456 drop database_name

    mysqladmin -uroot -p123456 create database_name

    mysql -uroot -p123456 database_name
    注:在导入备份数据库前,database_name如果没有,是需要创建的;而且与backup20070713.sql中数据库名是一样的才能导入。

6,使用二进制文件再现用户操作,即恢复到想恢复的时刻(如不小心误删除,错误更新等....)

使用日志文件恢复数据库必须要有一个数据库备份(只要是在二进制日志文件功能开启之后备份的就行)。恢复数据库时,可以通过时间恢复,也可以通过操作点恢复。

(1)、通过时间恢复方法如下:

如果我在2011-04-02 00:00:00时刻开启了二进制日志文件功能,并备份了数据库文件。且在2011-04-02 12:00:00数据库发生异常,需要恢复到2011-04-0210:00:00。则操作如下:

l       用备份将数据库回复到2011-04-0200:00:00时候的状态。

l       在命令行输入如下命令:

mysqlbinlog--stop-date="2011-04-02 10:00:00" mysql安装目录\data\binary-log.000001  | mysql -u root –p

这样,系统会自动执行从二进制日志有记录开始截止到2011-04-02 10:00:00,用户所做过的所有操作。与stop-date对应的,还有start-date属性,可以设定执行记录的开始时间。也可以两个属性都设置。

 

2、通过操作点恢复方法如下:

在命令行中输入mysqlbinlog D:\binary-log.000003 > D:\log.txt,执行后打开log.txt,查看里面语句,可以发现:在每个操作之前,都会有一个独特的编号,如下红字显示:

/*!*/;

# at 450 /*编号450*/

#110402 15:31:50 server id 1 end_log_pos 529       Query       thread_id=2    exec_time=0         error_code=0

SET TIMESTAMP=1301729510/*!*/;

DROP TABLE `jwc`

此编号随着操作数增多而变大。和时间一样是一个标记,通过操作点恢复的语句如下:

mysqlbinlog --stop-position="450" mysql安装目录\data\binary-log.000001  | mysql -u root –p

这样,系统会自动执行二进制日志中编号最低的语句到编号450语句。与stop-position对应的,还有start-position属性,可以设定执行记录的开始编号。


你可能感兴趣的:(mysql)