c mysql binlog_MySQL数据库恢复(使用mysqlbinlog命令)

1:开启binlog日志记录

修改MysqL配置文件MysqL.ini,在[MysqLd]节点下添加

# log-bin

log-bin = E:/log/logbin.log

路径中不要包含中文和空格。重启MysqL服务。通过命令行停止和启动MysqL服务

c:\>net stop MysqL;

c:\>net start MysqL;

进入命令行进入MysqL并查看二进制日志是否已经启动

sql代码

MysqL>show variables like 'log_%';

日志成功开启后,会在E:/log/目录下创建logbin.index和logbin.000001两个文件。logbin.000001就是数据库的备份文件,以后就可以通过此文件对数据库进行恢复操作。

2:查看备份的二进制文件

sql代码

c:\MysqL\bin\>MysqLbinlog e:/log/logbin.000001

日后记录的操作多了,命令行方式基本就用不上了。可以使用将日志导出文件的方式来查看日志内容

2.1 导出

Xml代码

c:\MysqL\bin\>MysqLbinlog e:/log/logbin.000001 > e:/log/log.txt

">": 导入到文件中; ">>": 追加到文件中

如果有多个日志文件

sql代码

c:\MysqL\bin\> MysqLbinlog e:/log/logbin.000001 > e:/log/log.sql

c:\MysqL\bin\> MysqLbinlog e:/log/logbin.000002 >> e:/log/log.sq

2.2 按指定位置导出:

sql代码

c:\MysqL\bin\>MysqLbinlog --start-position=185 --stop-position=338 e:/log/logbin.000001 > e:/log/log3.txt

2.3 按指定时间导出:

Xml代码

c:\MysqL\bin\>MysqLbinlog --start-datetime="2010-01-07 11:25:56" --stop-datetime="2010-01-07 13:23:50" e:/log/logbin.000001 > e:/log/log_by_date22.txt

3:从备份恢复数据库

做了一次更新操作,之后日志的内容如下:

sql代码

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#110107 13:23:50 server id 1 end_log_pos 106 Start: binlog v 4,server v 5.1.53-community-log created 110107 13:23:50 at startup

# Warning: this binlog is either in use or was not closed properly.

ROLLBACK/*!*/;

BINLOG '

ZqMmTQ8BAAAAZgAAAGoAAAABAAQANS4xLjUzLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAABmoyZNEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC

'/*!*/;

# at 106

#110107 13:26:58 server id 1 end_log_pos 185 Query thread_id=44 exec_time=1 error_code=0

SET TIMESTAMP=1294378018/*!*/;

SET @@session.pseudo_thread_id=44/*!*/;

SET @@session.foreign_key_checks=1,@@session.sql_auto_is_null=1,@@session.unique_checks=1,@@session.autocommit=1/*!*/;

SET @@session.sql_mode=1344274432/*!*/;

SET @@session.auto_increment_increment=1,@@session.auto_increment_offset=1/*!*/;

/*!\C utf8 *//*!*/;

SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

BEGIN

/*!*/;

# at 185

#110107 13:26:58 server id 1 end_log_pos 338 Query thread_id=44 exec_time=1 error_code=0

use ncl-interactive/*!*/;

SET TIMESTAMP=1294378018/*!*/;

UPDATE `t_system_id` SET `id_value`='3000' WHERE (`table_name`='t_working_day')

/*!*/;

# at 338

#110107 13:26:58 server id 1 end_log_pos 365 Xid = 8016

COMMIT/*!*/;

DELIMITER ;

DELIMITER /*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by MysqLbinlog */;

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,@@session.collation_server=33/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

BEGIN

/*!*/;

# at 185

#110107 13:26:58 server id 1 end_log_pos 338 Query thread_id=44 exec_time=1 error_code=0

use ncl-interactive/*!*/;

SET TIMESTAMP=1294378018/*!*/;

UPDATE `t_system_id` SET `id_value`='3000' WHERE (`table_name`='t_working_day')

/*!*/;

# at 338

#110107 13:26:58 server id 1 end_log_pos 365 Xid = 8016

COMMIT/*!*/;

DELIMITER ;

DELIMITER /*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by MysqLbinlog */;

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

3.1 恢复:

sql代码

c:\MysqL\bin\>MysqLbinlog e:/log/logbin.000001 | MysqL -u root -p

3.2 按指定位置恢复:

sql代码

c:\MysqL\bin\>MysqLbinlog --start-position=185 --stop-position=338 e:/log/logbin.000001 | MysqL -u root -p

3.3 按指定时间恢复:

Xml代码

c:\MysqL\bin\>MysqLbinlog --start-datetime="2010-01-07 11:25:56" --stop-datetime="2010-01-07 13:23:50" e:/log/logbin.000001 | MysqL -u root -p

3.4 通过导出的脚本文件恢复

sql代码

c:\MysqL\bin\>MysqL -e "source e:/log/log.sql"

4.其他常用操作

4.1 查看所有日志文件

sql代码

MysqL>show master logs;

4.2 当前使用的binlog文件

sql代码

MysqL>show binlog events \g;

4.3 产生一个新的binlog日志文件

sql代码

MysqL>flush logs;

4.4 删除所有二进制日志,并从新开始记录(注意:reset master命令会删除所有的二进制日志)

sql代码

MysqL > flush logs;

MysqL > reset master;

4.5 快速备份数据到sql文件

sql代码

c:\MysqL\bin>MysqLdump -u root -p --opt --quick interactive > e:/log/MysqLdump.sql

为了方便查看,把从脚本恢复的命令在写一次

sql代码

c:\MysqL\bin\>MysqL -e "source e:/log/MysqLdump.sql"

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值