注:binlog无法通过命令开启,log_bin是系统只读变量,只能在配置文件改。
一、登录MySQL查看日志是否开启
# 登录MySQL
mysql -uroot -p
密码
# 查看是否开启binlog日志
show variables like '%log_bin%';
# 未开启binlog日志时,log_bin显示为OFF
二、修改MySQL配置文件
# 以下在Linux系统中执行
# 查找配置文件
find / -name my.cnf
# 修改配置文件
vim /etc/my.cnf
# 在配置文件的[mysqld]下添加以下内容
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id = 1
#开启mysql binlog功能
log-bin=mysql-bin
#binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW
#对于binlog_format = ROW模式时,减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal
:wq 保存退出
三、重启MySQL服务
systemctl restart mysqld
四、登录MySQL查看是否开启binlog日志
# 登录
mysql -uroot -p
密码
# 查看是否开启binlog日志
show variables like '%log_bin%';
五、测试是否正常开启
可以对表信息进行修改,并到日志记录地址查看日志大小是否变化(我这里的日志位置就是/var/lib/mysql/下,mysql-bin开头的文件)
六、补充,binlog相关命令
# 查看是否开启 binlog日志(默认不开启,log_bin值为OF)及日志位置
show variables like '%log_bin%';
# 查看已产生的日志文件
show binary logs;
# 查看当前使用的日志文件
show master status;
# 查看日志事件信息 ,开始、结束操作位置等
show binlog events;
# 查看mysql-bin.000001日志文件的事件信息 ,开始、结束操作位置等
show binlog events in 'mysql-bin.000001';
# 产生新日志,后面的操作会写到新日志中,日志名mysql-bin.00000X+1
flush logs;
# 清空所有的日志,从mysql-bin.000001开始重新记录日志
reset master;
# 查询mysql-bin.000001中记录的操作,不显示sql,要进入到mysql的安装目录中
mysqlbinlog mysql-bin.000001;
# 查询mysql-bin.000001中记录的操作,会显示sql语句
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001;