mysqlbinlog 操作记录
最后更新于:2022-04-02 03:57:22
[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
```
';