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三种格式
- STATEMENT(默认): 记录原始的SQL语句
- ROW:不记录SQL语句,记录行级的数据变更,数据量大,但是精确到每行的数据变化。
- MINED:混合模式。
show variables like "binlog_format";可以查看日志格式。
参考:查看并开启MySQL的log-bin和general_log日志
mysql日志文件开启及详解:General_log 和 Binlog
浙公网安备 33010602011771号