文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

mysqlbinlog增量恢复

2014-11-02 03:34

关注

mysqlbinlog增量恢复

目录

前言

mysqlbinlog工具的作用是解析mysql的二进制binlog的日志内容,把二进制日志解析成可以在MySQL数据库里执行的SQL语句。

1.mysql的binlog日志是什么

mysql数据目录下的xxx-bin.000001这样的文件就是mysql的binlog日志

2.mysql的binlog日志的作用

mysql的binlog日志用于记录MySQL内部的增删改等操作,也就是对MySQL数据库更新内容的记录(对数据库的改动),对数据库进行查询的语句(如以show、select开头的语句),不会被binlog日志记录。binlog日志的主要作用是数据库的主从复制以及数据灾难后的增量恢复。

3.mysql的binlog日志功能如何开启

在mysql的配置文件my.cnf中,增加log_bin参数即可开启binlog日志,也可以通过赋值来指定binlog日志的文件名。

vi /etc/my.cnf
[mysqld]
log_bin=/data/mysql/mysql-bin

4.mysqlbinlog工具解析binlog日志

binlog日志是二进制格式的,不能使用查看文本工具的命令(比如,cat、vi等)查看。

4.1.解析指定库的binlog日志

利用“mysqlbinlog -d”参数解析指定库的binlog日志:

mysqlbinlog -d oldboy mysql-bin.000004 -r bin.sql  #-d指定库,-r指定生成的文件
grep -i insert bin.sql  #过滤内容

mysqlbinlog可以指定-d实现分库导出binlog,如果使用-d参数,那么在更新数据时,必须要有use库名,才能分出指定库的binlog,例如,写入数据库的语句必须采用的写法。

use oldboy;
insert into test values(1,"oldboy");

这种写法是不行的:
insert into oldboy.test values(2,"oldgirl");

4.2.按照位置截取binlog内容

按照位置截取binlog内容的优点是精确,但是要花费时间寻找位置。

mysqlbinlog mysql-bin.000009 --start-position=365 --stop-position=456 -r pos.sql

指定了开始位置,而不指定结束位置:
mysqlbinlog mysql-bin.000009 --start-position=365 -r pos.sql

指定了结束位置,而不指定开始位置:
mysqlbinlog mysql-bin.000009 --start-position=456 -r pos.sql

所谓的位置点,就是mysqlbinlog解析文件里的不同行行首的“# at 数字”标识的数据。

4.3.按照时间截取binlog内容

按照时间截取binlog内容的缺点是模糊、不准确,截取的内容会丢失部分数据,精确到秒,1秒也可能会有很多条语句。

截取mysql-bin.000009文件中从‘2014-10-16 17:14:15"时间到’2014-10-26 17:15:15‘时间的数据

mysqlbinlog mysql-bin.000009 --start-datetime="2014-10-16 17:14:15" --stop=datetime="2014-10-26 17:15:15" -r time.sql

指定了开始时间,而不指定结束时间:
mysqlbinlog mysql-bin.000009 --start-datetime="2014-10-16 17:14:15" -r time.sql

指定了结束时间,而不指定开始时间:
mysqlbinlog mysql-bin.000009 --stop=datetime="2014-10-26 17:15:15" -r time.sql

所谓的时间点,就是mysqlbinlog解析文件里的不同行行首的“#170303 9:44:22“标识的数据

5.mysqlbinlog命令常用参数

mysqlbinlog命令常用参数 参数说明
-d,--databases=name 根据指定库拆分binlog(拆分单表binlog可通过SQL关键字过滤)
-r,--result-file=name 指定解析binlog输出SQL语句
-R,--read-from-remote-server 从MySQL服务器读取binlog日志,是下面参数的别名read-from-remote-master=BINLOG-DUMP-NON-GTIDS
-j,--start-position=# 读取binlog的起始位置点,#号是具体的位置点
--stop-position=# 读取binlog的停止位置点,#号是具体的位置点
--start-datetime=name 读取binlog的起始位置点,name是具体的时间,格式为:2004-12-25 11:25:56
--stop-datetime=name 读取binlog的停止位置点,name是具体的时间,格式为:2004-12-25 11:25:56
--base64-output=decode-rows 解析ROW级别binlog日志的方法,例如,mysqlbinlog --base64-output=decode-rows -v mysql-bin.000016
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯