mysql中如何开启binlog?开启二进制日志文件?binary log?
需求描述:
开启mysql的binlog即binary log日志功能,在此记录下.
版本描述:
- mysql版本:5.7.21-log
操作过程:
1.修改my.cnf并且将以下参数加入其中,重启mysql实例
server-id=11 #由于bug,所以需要设置该参数.否则无法启动mysql实例 log-bin = mysql-bin #其中mysql-bin代表的是basename就是生成二进制日志文件的前缀部分,默认的位置在datadir目录下,也可以设置为其他的路径
2.查看binlog相关系统参数值
mysql> show variables where variable_name in ('log_bin','log_bin_basename','log_bin_index'); +------------------+-----------------------------+ | Variable_name | Value | +------------------+-----------------------------+ | log_bin | ON | | log_bin_basename | /mysql/data/mysql-bin | | log_bin_index | /mysql/data/mysql-bin.index | +------------------+-----------------------------+ 3 rows in set (0.00 sec)
备注:在my.cnf中设置好log-bin之后,log_bin自动设置为ON,basename设置为mysql-bin,index文件也自动生成,index文件记录的就是所有的二进制文件的名称及位置信息.
3.查看生成的二进制文件在文件系统上的表现形式
[root@testvm data]# ls -ltr mysql-bin.* -rw-r----- 1 mysql mysql 154 Jul 25 11:17 mysql-bin.000001 -rw-r----- 1 mysql mysql 19 Jul 25 11:17 mysql-bin.index
备注:mysql-bin是设置的basename,点号后面的序号是自动生成的,启动时,自动生成第一个文件,当该文件写满的时候,会写2,然后3,依次类推.
4.查看index文件的内容
[root@testvm data]# cat mysql-bin.index #如果mysql-bin不在默认的路径,那么index文件中记录的就是绝对路径加文件名
./mysql-bin.000001
5.注意事项
在官方文档中,说启用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)
6.如果my.cnf中log-bin不加basename
server-id=11
log-bin #后面不接basename
7.重启mysql实例,查看log-bin相关信息
mysql> show variables where variable_name in ('log_bin','log_bin_basename','log_bin_index'); +------------------+------------------------------+ | Variable_name | Value | +------------------+------------------------------+ | log_bin | ON | | log_bin_basename | /mysql/data/testvm-bin | | log_bin_index | /mysql/data/testvm-bin.index | +------------------+------------------------------+ 3 rows in set (0.01 sec)
备注:如果不加basename,那么就是主机名-bin,主机名-bin.index这样的命名方式.
文档创建时间:2018年7月19日15:06:57