开启mysql的binlog日志步骤详解

 更新时间:2025年02月06日 09:59:26   作者:爱可乐的小白  
这篇文章主要介绍了MySQL 5.7版本中二进制日志(bin_log)的配置和使用,文中通过图文及代码介绍的非常详细,需要的朋友可以参考下

mysql版本5.7

1.查看是否开启bin_log

show global variables like'log_bin'; 

off的话需要先开启

在mysql的文件夹目录中找到my.ini

加一行log-bin="C:/ProgramData/MySQL/MySQL Server 5.7/logs/log-bin"

并提前创建好目录

2.数据库会把日志放进logs目录中

3.查看log日志

SHOW BINARY LOGS;

查看log-bin.000001文件指定时间的log

(要运行mysqlbinlog命令,您需要在操作系统的命令行界面(例如Windows的命令提示符或PowerShell,Linux或macOS的终端)中执行,而不是在MySQL命令行客户端或任何SQL管理工具中。)

mysqlbinlog --no-defaults --base64-output=decode-rows -v --database="ezhizao_yzbh_ggy" --start-datetime="2024-12-04 11:00:00" --stop-datetime="2025-07-17 12:00:00" "log-bin.000001"

C:\ProgramData\MySQL\MySQL Server 5.7\logs>mysqlbinlog --no-defaults --base64-output=decode-rows -v --database="ezhizao_yzbh_ggy" --start-datetime="2024-12-04 11:10:00" --stop-datetime="2025-07-17 12:00:00" "log-bin.000001"
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#241203 16:50:52 server id 1  end_log_pos 123 CRC32 0xd1b0f8d9  Start: binlog v 4, server v 5.7.36-log created 241203 16:50:52 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
# at 1247
#241204 11:11:55 server id 1  end_log_pos 1312 CRC32 0x7bbf9070         Anonymous_GTID  last_committed=3        sequence_number=4       rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 1312
#241204 11:11:55 server id 1  end_log_pos 1396 CRC32 0xd0da4e48         Query   thread_id=5     exec_time=0     error_code=0
SET TIMESTAMP=1733281915/*!*/;
SET @@session.pseudo_thread_id=5/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8mb4 *//*!*/;
SET @@session.character_set_client=45,@@session.collation_connection=45,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 1396
#241204 11:11:55 server id 1  end_log_pos 1493 CRC32 0xaa53947b         Table_map: `ezhizao_yzbh_ggy`.`fxy_financial_voucher_template` mapped to number 140
# at 1493
#241204 11:11:55 server id 1  end_log_pos 1591 CRC32 0x86714204         Update_rows: table id 140 flags: STMT_END_F
### UPDATE `ezhizao_yzbh_ggy`.`fxy_financial_voucher_template`
### WHERE
###   @1=12
###   @2='12'
###   @3=b'0'
###   @4=1
###   @5=1
###   @6=2
###   @7=222
### SET
###   @1=12
###   @2='12'
###   @3=b'0'
###   @4=1
###   @5=1
###   @6=555
###   @7=222
# at 1591
#241204 11:11:55 server id 1  end_log_pos 1622 CRC32 0x32e198c4         Xid = 292
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

整理了下常用的配置项

  • 启用二进制日志

    [mysqld]
    log_bin = mysql-bin

    log_bin 指定了二进制日志文件的前缀名称。日志文件将以这个前缀开始,后跟一个数字后缀。

  • 设置日志格式

    [mysqld]
    binlog_format = ROW | STATEMENT | MIXED
    • ROW:每行变化都记录在日志中。
    • STATEMENT:记录执行的SQL语句。
    • MIXED:结合ROWSTATEMENT,根据情况选择最合适的模式。
  • 指定日志文件大小

    [mysqld]
    max_binlog_size = 100M

    max_binlog_size 指定了单个binlog文件的最大尺寸。当达到这个大小时,MySQL将创建一个新的日志文件。

  • 二进制日志缓存大小

    [mysqld]
    binlog_cache_size = 32K

    binlog_cache_size 指定了事务日志缓存的大小,用于ROW格式的binlog。

  • 二进制日志索引文件

    [mysqld]
    log_bin_index = mysql-bin.index

    log_bin_index 指定了二进制日志索引文件的名称,该文件记录了所有当前活跃和旧的binlog文件的位置。

  • 同步二进制日志到磁盘

    [mysqld]
    binlog_sync = 1

    binlog_sync 控制何时将事务日志从缓存同步到磁盘。1表示每次事务后都同步,这会降低性能但确保数据安全。

  • 二进制日志过期天数

    [mysqld]
    expire_logs_days = 7

    expire_logs_days 指定了binlog文件在被自动删除前可以保留的天数。

  • 最大二进制日志文件数量

    [mysqld]
    max_binlog_files = 100

    max_binlog_files 指定了服务器将保留的最大binlog文件数量。当超过这个数量时,最旧的文件将被删除。

  • 启用GTID模式

    [mysqld]
    gtid_mode = ON

    gtid_mode 启用全局事务标识符(GTID),用于复制和恢复。

  • 启用自动位置同步

    [mysqld]
    log_slave_updates = 1

    log_slave_updates 允许从服务器将复制的更新记录到自己的binlog中。

总结 

到此这篇关于开启mysql的binlog日志的文章就介绍到这了,更多相关开启mysql的binlog日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中主键索引与聚焦索引之概念的学习教程

    MySQL中主键索引与聚焦索引之概念的学习教程

    这篇文章主要介绍了MySQL中的主键索引与聚焦索引的概念,文中也对比了两种索引有何不同,需要的朋友可以参考下
    2015-11-11
  • MySQL根据条件迁移数据的几种方法实现

    MySQL根据条件迁移数据的几种方法实现

    本文主要介绍了MySQL根据条件迁移数据的实现,包括使用INSERT INTO SELECT、UPDATE、DELETE语句以及结合子查询进行迁移,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • mysql创建内存表的方法

    mysql创建内存表的方法

    这篇文章主要介绍了mysql创建内存表的方法,并为大家准备了一些注意事项,需要的朋友可以参考下
    2014-03-03
  • 在MySQL中创建聚集索引的操作方法

    在MySQL中创建聚集索引的操作方法

    在数据库性能优化中,索引是一个重要的工具,在MySQL中,聚集索引(Clustered Index)是一种特殊的索引,它将表中的记录按照索引顺序存储,本文我们将详述MySQL中聚集索引的基础理论、规则以及相关操作方法,需要的朋友可以参考下
    2025-09-09
  • mysql 临时表 cann''t reopen解决方案

    mysql 临时表 cann''t reopen解决方案

    MySql关于临时表cann't reopen的问题,本文将提供详细的解决方案,需要了解的朋友可以参考下
    2012-11-11
  • 浅谈mysql中concat函数,mysql在字段前/后增加字符串

    浅谈mysql中concat函数,mysql在字段前/后增加字符串

    下面小编就为大家带来一篇浅谈mysql中concat函数,mysql在字段前/后增加字符串。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • mysql搭建主从复制的实现步骤

    mysql搭建主从复制的实现步骤

    在MySQL集群中,主库更新会同步到从库,但从库更新不同步到主库,主从复制能分摊压力,本文就来介绍一下mysql搭建主从复制的实现步骤,感兴趣的可以了解一下
    2024-11-11
  • MySQL使用binlog日志进行数据库迁移和数据恢复

    MySQL使用binlog日志进行数据库迁移和数据恢复

    MySQL的二进制日志是MySQL数据库中非常关键的一个组件,主要用于记录所有数据库表结构或表数据改变的操作语句,binlog是MySQL数据复制的基础,并且常常被用于数据恢复,本文给大家介绍了MySQL使用binlog日志进行数据库迁移和数据恢复,需要的朋友可以参考下
    2024-04-04
  • MySQL数据实时同步Redis的方案全解析

    MySQL数据实时同步Redis的方案全解析

    Canal通过解析MySQL的binlog,实现数据增量同步到Redis,保持数据一致性,核心工作原理是Canal伪装成MySQL从库,模拟从库交互,获取并解析binlog,然后更新到Redis,该方案对业务侵入小,适用于实时数据同步场景,本文介绍MySQL数据实时同步Redis的方法,感兴趣的朋友一起看看吧
    2025-12-12
  • percona 实用工具之pt-kill使用介绍

    percona 实用工具之pt-kill使用介绍

    一个优秀的kill MySQL连接的一个工具,是percona toolkit的一部分,在因为空闲连接较多导致超过最大连接数、某个有问题的sql导致mysql负载很高时,都需要将一些连接kill掉,这个工具主要就是这个用途
    2016-04-04

最新评论