1. MySQL服务器都提供了哪几种类型的日志文件?说明每种日志的用途。
Error log:启动、关闭和异常有关的诊断信息
General query log:服务器从客户端收到的所有语句
Slow query log:需要很长时间执行的查询
Audit log:企业版基于策略的审计
Binary log:修改数据的语句
2. MySQL 8.0默认启用哪两种日志记录?
在MySQL 8.0中,默认启用的两种日志记录是错误日志和二进制日志(binlog)。错误日志记录了MySQL服务器启动和停止时的相关信息,以及运行过程中发生的任何严重错误;二进制日志记录了所有对数据库进行修改的操作,用于数据恢复和主从复制。
3. 请说明常规查询日志和慢速查询日志在记录的内容上有何不同。
常规查询日志(General Query Log)记录了MySQL服务器接收到的所有SQL查询和命令,包括连接和断开连接的请求。它详细记录了每个查询的执行时间、用户、主机和执行的SQL语句。相比之下,慢速查询日志(Slow Query Log)仅记录执行时间超过预设阈值的SQL查询。这对于识别和优化执行时间较长的查询非常有用。慢速查询日志的内容包括执行时间、用户、主机和执行的SQL语句,但只记录那些被认为是“慢”的查询。
4. 如何配置才能将慢速查询日志和常规查询日志在文件和表里同时保存?
在MySQL的配置文件中进行相应的设置,打开MySQL的配置文件my.cnf。
在 [mysqld] 部分添加以下配置:
[mysqld]
# 启用慢速查询日志
slow_query_log = 1
slow_query_log_file = /path/to/your/slow_query.log
long_query_time = 2
log_output = 'FILE,TABLE'
# 启用常规查询日志
general_log = 1
general_log_file = /path/to/your/general_query.log
log_output = 'FILE,TABLE'
5. 从DBA的角度,谈一下使用Performance schema的目的或作用?
从DBA的角度来看,使用Performance Schema的主要目的是进行性能分析和诊断。Performance Schema提供了一种方式来收集数据库操作的性能和资源使用数据,帮助DBA监控MySQL服务器的内部运行状态,如CPU使用率、内存使用率、I/O操作等。通过分析这些数据,DBA可以识别性能瓶颈、优化SQL查询、提高系统效率,并确保数据库系统的健康状况。
6. Performance schema中的顶级检测组件都有哪些?
idle:检测空闲事件;
error:检测错误事件;
memory:检测内存事件;
stage:检测阶段事件;
statement:检测语句事件;
transaction:检测事务事件;
wait:检测等待事件。
7. 请谈一下MySQL 8.0新增加的sys模式的作用。
MySQL 8.0引入了sys模式,这是一组基于Performance Schema的数据汇总视图、存储过程和函数,旨在帮助DBA和开发人员更容易地解释和使用性能数据。sys模式提供了格式化的性能数据报告和诊断工具,使得性能调优和问题诊断更加直观和高效。通过sys模式,DBA可以更方便地进行MySQL的性能管理和优化。
8. 使用audit_log_filter_linux_install.sql脚本可以配置基于规则的MySQL审计功能,这句话对吗?
对,可以使用 audit_log_filter_linux_install.sql 脚本来配置基于规则的MySQL审计功能。这个脚本安装和配置MySQL的审计日志插件,能够根据特定规则记录和监控数据库活动。
9. MySQL Enterprise Monitor都能提供哪些管理数据库的功能?
MySQL Enterprise Monitor提供了多种管理数据库的功能,包括实时监控MySQL查询和性能相关的服务器指标、自动发现和监控MySQL集群和复制拓扑、备份管理、性能趋势分析和报警、以及最佳实践顾问建议。这些功能帮助DBA更有效地管理和优化MySQL数据库,确保系统的高可用性和性能。
10. 请给出SHOW PROCESSLIST命令输出的列名,并说出每个列的作用。
Id:线程的唯一标识符,用于区分不同的连接。
User:执行查询的用户。
Host:客户端主机名和端口号,显示查询是从哪个IP和端口发出的。
db:当前查询正在访问的数据库。
Command:当前线程正在执行的命令类型(如 Sleep、Query、Connect 等)。
Time:当前状态持续的时间,单位为秒。
State:当前SQL语句的状态,描述语句执行中的某个阶段。
Info:显示正在执行的SQL语句。