MYSQL general log与binlog

general log与binlog比较

今天看八股的时候看到他们都是存sql语句稍微有点困惑,记录一下具体的区别:

general log

  • 记录范围:general log记录的是MYSQL服务所有的sql语句,而且是文本形式的。
  • 作用场景:用于调试等操作,默认关闭,可手动打开,一般只在调试时临时开启。
  • 占用空间:占用资源多,开启会有5%~10%性能损耗。

general相关操作

  • 开启general log:set global general_log=on;
  • 设置日志文件位置:set global general_log_file='**地址**';
  • 设置保存类型:set global log_output='table/file'; 这里输出可以选择table/file两种,也可以table、file两种同时支持。但是记录成表的形式更加耗费资源。

binlog

  • 记录范围:记录的是DDL和DML语句(除了查询语句)。
  • 作用场景:用于主从复制,数据恢复等。
  • 占用空间:默认开启,大约会有1%的性能损耗。

binlog相关操作

  • 查看日志列表:show master logs;
  • 查看master状态:show master status;
  • 刷新日志:flush logs;
  • 重置日志:reset master;

binlog三种格式

  1. STATEMENT(默认): 记录原始的SQL语句
  2. ROW:不记录SQL语句,记录行级的数据变更,数据量大,但是精确到每行的数据变化。
  3. MINED:混合模式。
    show variables like "binlog_format";可以查看日志格式。

参考:查看并开启MySQL的log-bin和general_log日志
mysql日志文件开启及详解:General_log 和 Binlog

posted @ 2026-01-06 23:12  卡子卡卡  阅读(3)  评论(0)    收藏  举报