开启mysql的binlog日志

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:ProgramDataMySQLMySQL Server 5.7logs>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*/;

整理了下常用的配置项

  1. 启用二进制日志

    复制代码
    [mysqld]
    log_bin = mysql-bin

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

  2. 设置日志格式

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

    复制代码
    [mysqld]
    max_binlog_size = 100M

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

  4. 二进制日志缓存大小

    复制代码
    [mysqld]
    binlog_cache_size = 32K

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

  5. 二进制日志索引文件

    复制代码
    [mysqld]
    log_bin_index = mysql-bin.index

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

  6. 同步二进制日志到磁盘

    复制代码
    [mysqld]
    binlog_sync = 1

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

  7. 二进制日志过期天数

    复制代码
    [mysqld]
    expire_logs_days = 7

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

  8. 最大二进制日志文件数量

    复制代码
    [mysqld]
    max_binlog_files = 100

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

  9. 启用GTID模式

    复制代码
    [mysqld]
    gtid_mode = ON

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

  10. 启用自动位置同步

    mysqld

    log_slave_updates = 1

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

相关推荐
小陈工1 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
0xDevNull5 小时前
MySQL数据冷热分离详解
后端·mysql
科技小花6 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸6 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain6 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希6 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神6 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员6 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java7 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿7 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb