今天继续本系列的第四篇,由于内容比较简单,就直接开放,后续的篇幅中会每篇解析5题来加快学习速度。旨在通过练习OCP试题学习相关知识点。
原题如下:
Q4.You want to log only the changes made to the database objects and data on the MySQL system. Which log will
do this by default?
A)error log
B)slow query log
C)general query log
D)binary log
E)audit log
题目是问,在MySQL系统中,哪个日志默认记录数据库对象和数据的变更。选项有五个:错误日志、慢查询日志、通用查询日志、二进制日志、审计日志
一、 选项解析
1. Error Log(错误日志)
错误日志主要用于记录 MySQL 服务器启动、运行或关闭过程中的错误信息、警告和关键事件(如硬件故障或权限问题)。它不记录数据变更操作,因此不符合题意。
2. Slow Query Log(慢查询日志)
慢查询日志记录执行时间超过设定阈值的查询语句(如 long_query_time 设置为 2 秒),用于性能优化。它仅记录慢查询,而非所有数据变更操作,因此排除。
3. General Query Log(通用查询日志)
通用查询日志记录所有客户端连接和执行的 SQL 语句,包括 SELECT 等非变更操作。虽然包含部分数据修改语句,但默认不启用且记录范围过广,并非专门用于变更追踪。
4. Binary Log(二进制日志)
二进制日志是唯一符合题意的选项。它默认记录所有对数据库的 数据变更操作(如 INSERT、UPDATE、DELETE、DDL 等),并以二进制格式存储。
5. Audit Log(审计日志)
审计日志记录用户操作(如登录、权限变更等),用于安全审计和合规性检查。但它是 MySQL 企业版功能,社区版需额外插件支持,且 默认不启用,因此不符合题意。
答案: 根据题目要求“默认”、"记录数据库对象和数据的变更",正确答案是 D) binary log(二进制日志)
二、 对比及小结
以下再对上面5个日志进行默认启用及用途的对比,结果如下表所示:
日志类型 | 记录内容 | 默认启用 | 用途 |
---|---|---|---|
Binary Log | 所有数据变更操作(DDL/DML) | 是 | 数据恢复、主从复制 |
Error Log | 错误、警告和服务器状态信息 | 是 | 故障诊断 |
General Log | 所有 SQL 语句(含非变更操作) | 否 | 全量查询追踪 |
Slow Query Log | 执行时间过长的查询 | 否 | 性能优化 |
Audit Log | 用户操作(企业版功能) | 否 | 安全审计 |
另外,关于General Log和Slow Query Log的写入顺序,之前还通过源码调试进行解析