一, MySQL 5.7.x 开启二进制日志
1) 未开启二进制日志之前:
- MySQL> show variables like 'log_bin';
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
- | log_bin | ON | #二进制日志是关闭的
- +---------------+-------+
- 1 row in set (0.00 sec)
- MySQL>
2) 开启二进制日志
修改 my.cnf 并且将以下参数加入其中, 重启 MySQL 实例:
- log_bin=MySQL-bin #其中 MySQL-bin 代表的是 basename 就是生成二进制日志文件的前缀部分, 默认的位置在 datadir 目录下, 也可以设置为其他的路径
- server-id=11 #由于 bug 问题必须设置这个 id, 数字随便写
- datadir=/var/lib/MySQL #默认指定文件存放位置, 可修改, 但是要注意权限
重启服务器:
systemctl restart mysqld
3) 查看开启状态;
- MySQL> show variables like 'log_bin';
- +---------------+-------+
- | Variable_name | Value |
- +---------------+-------+
- | log_bin | ON |
- +---------------+-------+
- 1 row in set (0.00 sec)
注: 在 my.cnf 中设置好 log-bin 之后, log_bin 自动设置为 ON,basename 设置为 MySQL-bin,index 文件也自动生成, index 文件记录的就是所有的二进制文件的名称及位置信息.
- MySQL> show variables where variable_name in ('log_bin','log_bin_basename','log_bin_index');
- +------------------+--------------------------------+
- | Variable_name | Value |
- +------------------+--------------------------------+
- | log_bin | ON |
- | log_bin_basename | /var/lib/MySQL/MySQL-bin |
- | log_bin_index | /var/lib/MySQL/MySQL-bin.index |
- +------------------+--------------------------------+
- 3 rows in set (0.01 sec)
- MySQL>
4) 注意事项
在官方文档中, 说启用 binary log 只是需要将 log-bin=MySQL-bin 设置即可, 但是因为有 bug, 所以必须要设置 server-id 否则启动不成功.
官方文档解释如下:
If you specify the --log-bin option without also specifying a --server-id, the server is not allowed to start. (Bug #11763963, Bug #56739)
来源: http://www.linuxidc.com/Linux/2018-10/154696.htm