一、什么是二进制日志
MySQL的二进制日志(binary log)是一个二进制文件,主要用于记录修改数据或有可能引起数据变更的MySQL语句。二进制日志(binary log)中记录了对MySQL数据库执行更改的所有操作,并且记录了语句发生时间、执行时长、操作数据等其它额外信息,但是它不记录SELECT、SHOW等那些不修改数据的SQL语句。二进制日志(binary log)主要用于数据库恢复和主从复制,以及审计(audit)操作。
开启二进制日志对性能的开销很小,带来的好处远大于坏处。
二、开启和设置二进制日志
1、查看二进制日志状态
默认情况下二进制日志是关闭的。
系统变量log_bin的值为OFF表示没有开启二进制日志,ON表示开启了二进制日志,如下所示:
mysql> show variables like 'log_bin';
+---------------------------------+------------------------------------+
| Variable_name | Value |
+---------------------------------+------------------------------------+
| log_bin | OFF |
+---------------------------------+------------------------------------+
1 rows in set (0.00 sec)
2、开启二进制日志
(1)修改配置文件并重启mysql服务
如果需要开启二进制日志,则必须在配置文件中[mysqld]下面添加log-bin [=DIR[filename]] 。
DIR参数指定二进制文件的存储路径;
filename参数指定二级制文件的文件名。
其中filename可以任意指定,但最好有一定规范。
系统变量log_bin是静态参数,不能动态修改的(因为它不是Dynamic Variable)。
内容如下所示:
server-id = 1 # mysql5.7必须加,否则mysql服务启动报错
log-bin = mysql_bin_log # 路径及命名,默认在data下
expire_logs_days = 10 # 过期时间,二进制文件自动删除的天数,0代表不删除
max_binlog_size = 100M # 单个日志文件大小
操作步骤:
Linux下的配置文件为/etc/my.cnf,Windows下的配置文件为my.ini。
[root@192 ~]# vim /etc/my.cnf
[mysqld]
# 省略部分内容
server-id = 1 # mysql5.7必须加,否则mysql服务启动报错
log-bin = mysql_bin_log # 路径及命名,默认在data下
expire_logs_days = 10 # 过期时间,二进制文件自动删除的天数,0代表不删除
max_binlog_size = 100M # 单个日志文件大小
[root@192 ~]# systemctl restart mysqld.service
[root@192 ~]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 二 2020-06-16 17:47:34 CST; 35s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 78724 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 78701 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 78726 (mysqld)
Tasks: 27
CGroup: /system.slice/mysqld.service
└─78726 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
6月