多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ## 语法 ``` -d, --database=name 只列出该数据库的条目(只适用本地日志) -h, --host=name 获取给定主机上的MySQL服务器的二进制日志。 -l, --local-load=name 为指定目录中的LOAD DATA INFILE预处理本地临时文件。 -o, --offset=# 跳过前N个条目。 -r, --result-file=name 将输出指向给定的文件。 -s, --short-form 只显示日志中包含的语句,不显示其它信息,该方式可以缩小生成sql文件的尺寸。 --start-datetime=name 从二进制日志中读取等于或晚于datetime参量的事件,datetime值相对于运行mysqlbinlog的机器上的本地时区。 该值格式应符合DATETIME或TIMESTAMP数据类型。例如:2004-12-25 11:25:56 ,建议使用引号标识。 --stop-datetime=name 从二进制日志中读取小于或等于datetime的所有日志事件。关于datetime值的描述参见--start-datetime选项。 -j, --start-position=# 从二进制日志中第1个位置等于N参量时的事件开始读。 --stop-position=# 从二进制日志中第1个位置等于和大于N参量时的事件起停止读。 --server-id=# 仅仅提取指定server_id的binlog日志 --set-charset=name 添加SET NAMES character_set到输出 -t, --to-last-log 在MySQL服务器中请求的二进制日志的结尾处不停止,而是继续打印直到最后一个二进制日志的结尾。 如果将输出发送给同一台MySQL服务器,会导致无限循环。该选项要求–read-from-remote-server。 -D, --disable-log-bin 禁用二进制日志。如果使用–to-last-logs选项将输出发送给同一台MySQL服务器,可以避免无限循环。 该选项在崩溃恢复时也很有用,可以避免复制已经记录的语句。注释:该选项要求有SUPER权限。 -v, --verbose 用于输出基于row模式的binlog日志,-vv为列数据类型添加注释 -p 密码 -P 端口 -u 用戶名 ``` ## 场景 ### 是否开启 / binlog文件的目录位置 ``` mysql> SHOW VARIABLES LIKE 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ ``` ``` mysql> SHOW VARIABLES LIKE 'datadir'; +---------------+-----------------------+ | Variable_name | Value | +---------------+-----------------------+ | datadir | /usr/local/var/mysql/ | +---------------+-----------------------+ ``` ## 查看某个时间 ``` > mysqlbinlog --start-datetime="2017-01-09 17:55:00" --stop-datetime="2017-01-09 18:00:00" --base64-output=decode-rows --verbose bin.000025 ``` ### 查看binlog 日志名称 ``` mysql> show binary logs; +-----------------+-----------+ | Log_name | File_size | +-----------------+-----------+ | APP01bin.000001 | 120 | +-----------------+-----------+ ``` ### 还原 binlog ``` > mysqlbinlog binlog-file | mysql -uroot -p ```