暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL5.7开启binlog日志

原创 福娃筱欢 恩墨学院 2023-09-23
1806

在MySQL5.7中,默认情况下binlog是关闭的,需要手动开启。可以按照以下步骤开启binlog。

1.binlog介绍

MySQL的二进制日志记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。一般来说开启二进制日志大概会有1%的性能损耗。
二进制有两个最重要的使用场景:
1)MySQL Replication在Master端开启binlog,Mster把它的二进制日志传递给slaves来达到master-slave数据一致的目的。
2)数据恢复,通过使用mysqlbinlog工具来使恢复数据。
二进制日志包括两类文件:

  • 二进制日志索引文件(文件名后缀为.index)用于记录所有的二进制文件,
  • 二进制日志文件(文件名后缀为.00000*)记录数据库所有的DDL和DML(除了数据查询语句)语句事件。

2.查看binlog是否开启

#binlog是否开开启及位置
show variables like 'log_bin'; #如果返回值为ON,则表示binlog已经开启

#binlog时效配置
show variables like '%expire%';

#查看binlog日志保存格式 
show variables like 'binlog_format';

3.修改MySQL配置文件my.cnf

在[mysqld]下增加如下配置:

[mysqld]
server-id=1  #一定设置不然启动报错
log-bin=/home/logs/mysql-bin  #binlog日志路径
expire_logs_days = 5 #超过5天定时清理,0表示Binlog文件永不过期,即不自动清除Binlog文件。
max_binlog_size = 100m  #binlog每个日志文件大小
binlog_format = row #binlog日志格式

其中,log-bin=mysql-bin表示开启binlog,并将binlog文件保存在mysq-bin文件中。server-id表示MySQL服务器的唯一标识,可以设置为任意整数。

4.重启MySQL服务,使配置生效。

#windows
net stop mysql   
net start mysql 

#linux
service mysql stop 
service mysql start 
service mysql restart   
或
systemctl start mysqld
systemctl status mysqld
systemctl stop mysqld
systemctl restart mysqld

5.查看binlog的内容

root@localhost >show binlog events;
+-----------------+-----+----------------+-----------+-------------+------------------
| Log_name        | Pos | Event_type     | Server_id | End_log_pos | Info                                  |
+-----------------+-----+----------------+-----------+-------------+------------------
| mybinlog.000001 |   4 | Format_desc    |       103 |         123 | Server ver: 5.7.42-log, Binlog ver: 4 |
| mybinlog.000001 | 123 | Previous_gtids |       103 |         154 |                                       |
| mybinlog.000001 | 154 | Stop           |       103 |         177 |                  
3 rows in set (0.00 sec)

这将显示所有的binlog事件,包括时间戳、事件类型、数据库、表名、操作等信息
注意:开启binlog会带来一定的性能开销,因此在生产环境中需要谨慎使用。同时,为了保证数据的一致性,应该定期备份binlog文件。

6.binlog常用命令

#查看所有的binlog日志列表
show master logs;

#查看master状态,即最后一个binlog日志的编号名称,及其最后一个操作时间pos结束点值
show master status;

#flush刷新binlog日志,此刻之后会产生一个新编号的binlog日志文件
flush logs;

#清空所有binlog日志,会删除所有日志,并让日志文件重新从000001开始 (生产上慎用)
reset master;

#查看binlog是否开启、位置
show variables like '%log_bin%';

----输出结果
+---------------------------------+------------------------------------+
| Variable_name                   | Value                              |
+---------------------------------+------------------------------------+
| log_bin                         | ON                                 |
| log_bin_basename                | /data/mysql/binlog/mysql-bin       |
| log_bin_index                   | /data/mysql/binlog/mysql-bin.index |
| log_bin_trust_function_creators | OFF                                |
| log_bin_use_v1_row_events       | OFF                                |
| sql_log_bin                     | ON                                 |
+---------------------------------+------------------------------------+
6 rows in set (0.00 sec)

7.binlog格式有哪些

image.png

8.清理binlog

(1) 使用reset master,该命令将会删除所有日志,并让日志文件重新从000001开始。生产环境慎用
(2) 使用命令

#语法
PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }
例如

#删除指定binlog之前的binlog,磁盘上也跟着删除
purge master logs to "binlog_name.00000X" ;

#删除指定时间之前的binlog,磁盘上也跟着删除
purge master logs before "2023-09-10";  

(3) 配置文件中增加 expire_logs_days=N 指定过了多少天日志自动过期清空或修改全局参数。该参数在MySQL8.0.中已废弃,由binlog_expire_logs_seconds代替

#5.7
set global expire_logs_days=5;

#8.0
set global binlog_expire_logs_seconds=259200;

9.查看binlog文件内容

9.1.查看binlog

binlog本身是一类二进制文件。二进制文件更省空间,写入速度更快,是无法直接打开来查看的。

#statement格式的二进制文件
mysqlbinlog mysql-bin.000001

#row格式,加上-v或者-vv参数
mysqlbinlog -vv mysql-bin.000001 

#基于开始/结束时间
/usr/local/mysql/bin/mysqlbinlog --start-datetime="2013-03-01 00:00:00" --stop-datetime="2014-03-21 23:59:59" /usr/local/mysql/var/mysql-bin.000007 -r  test2.sql
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论