mysqlbinlog经常使用于binlog导出分析及mysql数据恢复。html
下面有一些经常使用选项,简单介绍一下。mysql
--base64-output=name sql
决定binlog输出格式选项shell
'never'选项 数据库
不输出Sql语句格式bash
'decode-rows' 选项ide
将输出语句格式转换为注释的SQL语句格式,由于binlog日志如今大部分都是rows日志,不是语句日志,因此转换语句输出也只是rows变动的语句,不是当时输入的sql语句。编码
若是没有 --base64-output[=name] 选项,默认给出所有格式,默认是 'auto'。spa
·自动 ("auto") 或未指定 ("UNSPEC") 将自动显示 BINLOG 语句全部格式(即二进制格式和语句格式)。日志
若是没有--base64-output 选项给出的效果与 --base64-output=AUTO 相同。
--start-datetime=name
开始读取binlog日志的指定时间,时区是日志本地时区,时间格式例子‘2016-12-25 11:25:56 ’(要使用引号,避免shell里识别出错。)
--stop-datetime=name
中止读取binlog日志的指定时间,时区是日志本地时区,时间格式例子‘2016-12-25 11:25:56 ’(要使用引号,避免shell里识别出错。)
--start-position=#
开始读取 binlog 日志在 指定position号码. 读取范围更精准,能够避免时区错误,恢复数据时建议使用。
--stop-position=#
中止读取 binlog 日志在 指定position号码. 读取范围更精准,能够避免时区错误,恢复数据时建议使用。
-v 从行事件中重建伪 sql 语句。
-vv 从行事件中重建伪 sql 语句,添加对数据类型的注释。
--database=name
指定导出的数据库
--skip-gtids
输出时忽略全局事物ID号码。
导出时间范围内的binlog日志,从行事件中重建伪sql 语句,使用Sql语句编码,若是有多个binlog文件,后续使用>>添加到导出文件,尽可能使用绝对路径。
mysqlbinlog -v --base64-output=decode-rows --start-datetime='2016-12-25 11:25:56' \ --stop-datetime='2016-12-25 11:59:59' binlogname > filename.sql
捉取准确的position号码范围,导出sql文件。
mysqlbinlog --start-position=10000 --stop-position=20000 binlogname > filename.sql
mysql进行数据导入。
mysql -u'user' -p'password' < filename.sql #危险操做!!!
参考资料:
1,RDS Mysql中binlog日志查看 https://help.aliyun.com/knowledge_detail/41709.html
2,mysqlbinlog官方手册 https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html