那种漂亮的网站怎么做的,两学一做教育纪实评价系统网站,dz网站制作,wordpress学生本文使用的MySQL版本是8 日志概览
它们记录了数据库系统中的不同操作和事件#xff0c;以便于故障排除、性能优化和数据恢复。本文将介绍MySQL中常见的几种日志#xff0c;同时也会介绍一点常用的选项。
官方文档#xff1a;MySQL :: MySQL 8.0 Reference Manual :: 7.4 M… 本文使用的MySQL版本是8 日志概览
它们记录了数据库系统中的不同操作和事件以便于故障排除、性能优化和数据恢复。本文将介绍MySQL中常见的几种日志同时也会介绍一点常用的选项。
官方文档MySQL :: MySQL 8.0 Reference Manual :: 7.4 MySQL Server Logs 相关说明
默认情况下在上面的日志中Windows环境下只开启 错误日志。Linux开启 错误日志 和 二进制日志。服务器运行期间可以控制一般查询日志和慢查询日志的开启也可以更改其日志文件名。刷新日志在MySQL客户端下执行 flush logs 将会把所有开启的日志都关闭并打开新的日志文件方便我们查看最新的日志。或者使用mysqladmin工具并带有flush-logs或refresh参数、或者使用mysqldump工具并带有--flush-logs选项时就会触发日志刷新的操作。 配置日志
这里以配置错误日志的路径为例
对于Windows 对于Linux 修改路径
找到配置文件如果不知道在哪查看http://t.csdnimg.cn/dZJZJ文章中的选项配置文件部分 修改log-error部分的值。如果只有文件名数据就是默认的数据目录自行添加为要修改的目录即可。
其他配置也都是一样的。 错误日志(Error Log)
错误日志包含 mysqld 启动和关闭时间的记录。它还包含在服务器启动和关闭期间以及在服务器运行期间发生的错误、警告和注释等诊断消息。例如如果 mysqld 注意到需要自动检查或修复某个表它将向错误日志写入一条消息。
根据错误日志配置的不同错误消息还可以填充 Performance Schema error _ log 表为日志提供 SQL 接口并允许查询其内容。
在某些操作系统上如果 mysqld 异常退出错误日志将包含堆栈跟踪。跟踪可用于确定 mysqld 退出的位置。
如果用于启动 mysqldmysqld _ safe 可以将消息写入错误日志。例如当 mysqld _ safe 注意到 mysqld 退出异常时它重新启动 mysqld 并将 mysqld 重新启动的消息写入错误日志。
官方文档MySQL :: MySQL 8.0 Reference Manual :: 7.4.2 The Error Log
错误日志字段 错误代码参考官方文档MySQL :: MySQL 8.0 Reference Manual :: 29.12.20.11 Error Summary Tables
MySQL :: MySQL 8.0 Error Reference :: 4 Global Error Message Reference 一般查询日志(General Query Log)
一般查询日志记录客户端连接或断开连接的信息同时记录从客户端接收的每个SQL语句。由于开启这样的记录会产生大量内容非常耗费服务器资源因此默认情况下是关闭的。
一般查询日志通常用于性能分析、安全审计和故障排除。通过分析一般查询日志可以了解数据库系统的运行状况检测潜在的性能瓶颈并对数据库访问进行监控和审计。此外一般查询日志还可以帮助数据库管理员追踪特定用户或应用程序对数据库的访问情况以及识别潜在的安全威胁和异常行为。 官方文档MySQL :: MySQL 8.0 Reference Manual :: 7.4.3 The General Query Log 保存为文件或表
对于一般查询日志和慢查询日志除了可以保存成一般的日志文件mysql中还为这两个日志提供了数据表所以也可以把数据存到表中。
可以选择都选择。使用表查看可以用条件查询比较方便。 可以通过客户端程序连接到服务器并查询表中的日志信息无需登录服务器主机访问文件系统。
查看保存选项 设置保存选项
SET GLOBAL log_output[FILE, TABLE, NONE];
查看表 慢查询日志(Slow Query Log)
慢查询日志由执行时间超过系统变量 long_query_time 指定的秒数的 SQL 语句组成并且检查的行数大于系统变量 min_examined_row_limit 指定的值。被记录的慢查询需要进行优化可以使用 mysqldumpslow 客户端程序对慢查询日志进行分析汇总。
需要注意的是获取初始锁的时间不计入执行时间MySQL 在执行完 SQL 语句并释放所有锁后才将符合条件的语句写入慢速查询日志因此日志顺序可能与执行顺序不同。
官方文档MySQL :: MySQL 8.0 Reference Manual :: 7.4.5 The Slow Query Log
慢查询日志参数
查看文件或表
查看文件
启用慢查询日志并将输出目标设置为FILE时每条语句前面用一行来表示日志的字段 # Query_time: SQL语句的执行时间单位秒 # Lock_time: 获取锁的时间单位秒 # Rows_sent: 发送到客户端的行数 # Rows_examined: 服务器检查的行数 # 开启了--log-slow-extra还会有下面的内容 # Thread_id: 线程标识符 # Errno: 错误码没有发生错误则为0 # Killed: 如果语句被终止用错误码表示原因如果语句正常终止则为0 # Bytes_received: 接收到SQL语句的Bytes值 # Bytes_sent: 返回给客户端的Byte值 # Read_first: 索引中第一个条目被读取的次数如果这个值很高表明服务器正在执行大量完整索引扫描 # Read_last: 读取索引中最后一个键的请求数使用 ORDER BY 时关注 # Read_key: 基于索引读取一行数据的请求数。如果这个值很高表明表为当前查询建立了正确的索引 # Read_next: 按索引排序读取下一行的请求数查询具有范围约束的索引列或者进行索引扫描此值将递增 # Read_prev: 按索引排序读取前一行的请求数。主要用于优化ORDER BY DESC # Read_rnd: 基于固定位置读取一行的请求数。这个值很高表明正在执行大量需要对结果进行排序的查询可能有很多查询进行了全表扫描整或者没有正确使用索引的连接 # Read_rnd_next: 读取数据文件中下一行的请求数。如果进行大量的表扫描这个值会很高。通常表明表没有建立正确地索引或者查询没有利用索引 # Sort_merge_passes: 排序算法完成的归并次数如果这个值很大考虑增加sort_buffer_size系统变量的值 # Sort_range_count: 使用范围进行排序的次数 # Sort_rows: 排序的行数 # Sort_scan_count: 通过扫描表完成的排序数 # Created_tmp_disk_tables: 服务器在执行语句时创建内部磁盘临时表的数量 # Created_tmp_tables: 服务器在执行语句时创建的内部临时表的数量 # Start: 执行SQL语句开始时间 # End: 执行SQL语句结束时间 查看表
表结构如下 二进制日志(Binary Log)
二进制日志是用来记录数据库中增加修改删除操作的日志不会记录查询等相关操作。保存的内容为二进制的能够高效的记录操作。
作用
数据恢复记录了相关的操作或者数据就可以用来恢复数据。主从节点数据复制从节点读取主节点上的二进制数据并执行用来同步更新数据。
官方文档MySQL :: MySQL 8.4 Reference Manual :: 7.4.4 The Binary Log 常见选项和变量
show variables like %bin%; 可以使用 log_bin 二进制日志文件
二进制日志文件名由基本名加上数字扩展名组成确保文件系列是有序的。
默认存储位置是数据目录。 二进制日志文件更新
服务器启动服务器重新启动刷新服务器日志日志大小达到max_binlog_size(单个日志文件最大字节数最小可以设定为 4096字节最大值和默认值都是1GB 不过如果是在记录事务的时候超出了设定的最大值这个文件可以超过这个值也要记录一个完整的事务在文件中)
日志索引文件
默认情况下这个索引文件与二级制文件名字大体上相同。就是上图的index文件。可以使用 --log-bin-index修改索引名。
修改日志目录
使用log-bin绝对路径文件名 来修改目录。 二进制日志格式
基于语句默认记录格式。记录每次执行的sql。但是当MySQL认为基于语句不能保证数据一致时就会自动切换到基于行的日志记录。使用 binlog-formatstatement 来设定。基于行记录每一行的数据。混合使用语句和行的格式来记录。 禁用二进制日志
不建议禁用
默认情况下MySQL启用了二进制日志Binary Log这是通过将系统变量log_bin设置为ON来实现的。二进制日志记录了数据库中的更新操作如插入、更新和删除操作。
如果要禁用二进制日志可以使用--skip-log-bin或--disable-log-bin选项。这两个选项的作用是相同的它们会覆盖默认设置使MySQL不再生成二进制日志。
需要注意的是如果同时指定了--log-bin选项和禁用二进制日志的选项--skip-log-bin或--disable-log-bin后面指定的选项会优先生效。也就是说如果在启动MySQL时同时指定了--log-bin和--skip-log-bin选项那么二进制日志将被禁用。 操作二进制日志
对于二进制文件的操作MySQL给我们提供了mysqlbinlog.exe程序。
具体的操作看http://t.csdnimg.cn/YFc9b 文章中的 mysqlbinlog 部分。
这边查看一下二进制内容 中继日志(Relay Log)
后续完成。
DDL日志(Metadata Log)
在MySQL8的文档中DDL只是提了一下。
而参考文档还是5.7版本的
DDL 日志总是在需要时自动创建并且没有用户可配置的选项。所以这里就不在多介 回滚日志(Undo Log)
Undo日志记录了对数据库进行修改的操作的逆操作即相反的操作以便在事务回滚或数据库恢复时撤销对数据的修改。 当一个事务执行修改操作例如插入、更新、删除时相关的旧数据会被存储到Undo日志中。 Undo日志对于实现数据库的一致性非常重要因为它提供了回滚事务的能力使得可以撤销未完成或出错的事务。 Undo日志通常使用多版本并发控制MVCC来支持并发事务每个事务都有自己的undo日志。
后续详细讲解。
重做日志(Redo Log)
Redo日志记录了对数据库进行修改的操作以便在数据库恢复时重新执行这些操作保证数据的持久性。 当一个事务提交时相关的修改操作会被记录到Redo日志中。 Redo日志对于数据库的可靠性和持久性非常重要因为它可以确保在数据库崩溃或意外断电的情况下将事务的已提交修改重新应用到数据库中使得数据库能够完全恢复到最近一次正常关闭时的状态。 Redo日志通常采用顺序写入方式以提高性能和减少I/O开销。
后续详细讲解。