2026/4/16 22:13:12
网站建设
项目流程
佛山网站公司,天工网,全球网,博客网站搭建1.日志概述1.1什么是MySQL日志MySQL 日志用于记录数据库运行期间各种行为动作#xff08;DDL,DML,DQL,DCL#xff09;。可以是文件、文本等存储形式。记录了 MySQL 从启动、运行到结束的整个生命周期中的关键行为。1.2MySQL日志的作用MySQL日志作用1.故障排查帮助诊断数据库运…1.日志概述1.1什么是MySQL日志MySQL 日志用于记录数据库运行期间各种行为动作DDL,DML,DQL,DCL。可以是文件、文本等存储形式。记录了 MySQL 从启动、运行到结束的整个生命周期中的关键行为。1.2MySQL日志的作用MySQL日志作用1.故障排查帮助诊断数据库运行问题2.性能分析识别性能瓶颈和慢查询3.数据恢复提供数据恢复基础4.安全审计记录数据库访问和操作行为5.主从复制支持数据库复制与数据同步1.3MySQL日志类型MySQL日志分类日志类型主要作用默认状态错误日志Error Log记录启动、关闭、错误、警告信息开启通用查询日志General Query Log记录所有客户端连接和执行的数据库关闭二进制日志Binary Log记录所有修改数据库内容的操作用于数据恢复和主从复制关闭5.7、开启8.0慢查询日志Slow Query Log记录执行时间超过阈值的查询用于性能优化关闭中继日志Relay Log在主从复制中从服务器用于存储主服务器二进制日志事件主从时开启重做日志Redo LogInnoDB引擎特有保持事务的持久性和恢复能力开启回滚日志Undo Log记录事务回滚信息支持事务的原子性开启2.日志配置与管理MySQL配置文件/etc/my.cnf2.0日志位置MySQL日志位置源码安装MySQL数据存放目录/usr/local/mysql/data错误日志/usr/local/mysql/data/mysqld.log二进制日志/usr/local/mysql/data/binlog.000001RPM包安装MySQL数据存放目录/var/lib/mysql错误日志/var/log/mysqld.log二进制日志/var/lib/mysql/binlog.0000012.1错误日志-Error Log查看错误日志文件路径SHOW VARIABLES LIKE log_error;相关配置-vim /etc/my. cnf需重启MySQL服务log-error /usr/local/mysql/data/mysqld.log -更改改日志路径2.2通用查询日志-General Query Log查看通用查询日志文件路径SHOW VARIABLES LIKE general%;相关配置-vim /etc/my. cnf需重启MySQL服务general_log 1 -启动通用查询日志general_log_file /var/lib/mysql/general.log -更改日志路径MySQL中可以执行SET GLOBAL general_log ON;SET GLOBAL general_log_file /var/lib/mysql/general.log;2.3慢查询日志-Slow Query Log查看慢日志文件路径SHOW VARIABLES LIKE slow_query%;查看慢日志记录规定时间SHOW VARIABLES LIKE long_query_time;相关配置-vim /etc/my. cnf需重启MySQL服务slow_query_log 1 -启动慢查询日志slow_query_log_file /usr/local/mysql/data/slow_query.log -更改慢查询日志路径long_query_time 5 -设置慢查询被记录的时间MySQL中可以执行SET GLOBAL slow_query_log ON;SET GLOBAL slow_query_log_file /usr/local/mysql/data/slow_query.log;SET GLOBAL long_query_time 5.0;2.4中继日志-Relay Log中继日志用于主从复制环境从服务器通过中继日志暂存从主服务器接收的二进制日志事件。2.4.1以下命令均在从服务器执行显示从库状态SHOW SLAVE STATUS\G显示主库状态SHOW MASTER STATUS\G查看中继日志相关参数SHOW VARIABLES LIKE %relay%;中继日志信息表SELECT * FROM mysql.slave_relay_log_info;3.二进制日志二进制日志记录所有数据变更用于数据恢复、主从复制、数据审计3.1查看二进制日志状态SHOW VARIABLES LIKE %log_bin%;3.2查看当前二进制日志文件SHOW BINARY LOGS;相关配置-vim /etc/my. cnf需重启MySQL服务log-bin /usr/local/mysql/data/mysql-bin -二进制日志文件前缀server-id 1 -服务器唯一标识符主从复制必须binlog_format ROW -修改二进制日志文件格式为ROWSET GLOBAL binlog_format ROW; -动态修改日志格式3.3二进制日志格式二进制日志格式格式特点优缺点使用场景STATEMENT记录SQL语句本身而不是数据本身文件小复制效率高简单查询无函数依赖ROW记录每一行数据被修改了哪些内容而不是SQL语句文件大回复速度慢数据一致性要求高MIXED根据执行的SQL语句自动选择使用什么格式管理相对复杂大多数生产环境3.4查看二进制日志内容3.4.1使用mysqlbilog工具查看mysqlbinlog /usr/local/mysql/data/mysql-bin.0000013.4.2解码查看详细内容mysqlbinlog -v --base64-outputDECODE-ROWS /usr/local/mysql/data/mysql-bin.000001 mysqlbinlog -v /usr/local/mysql/data/mysql-bin.0000013.5二进制日志管理3.5.1查看所有二进制日志文件SHOW BINARY LOGS;3.5.2刷新日志创建新的二进制日志文件FLUSH LOGS;3.5.3删除指定时间前的二进制日志PURGE BINARY LOGS BEFORE 2026-01-19 12:00:00;3.5.4删除所有二进制日志RESET MASTER;3.5.5临时关闭当前会话的二进制日志记录SET sql_log_bin 0;3.6二进制日志恢复数据案例实验环境先创建db5数据库在删除3.6.1基于时间点恢复首先查看binlog日志找到创建db5的记录使用命令恢复数据mysqlbinlog -v /var/lib/mysql/binlog.000011 --start-datetime2026-01-19 20:30:34 --stop-datetime2026-01-19 20:30:59 | mysql -uroot -pRoot1233.6.2基于位置服务首先查看binlog日志找到创建db5的记录mysqlbinlog /var/lib/mysql/binlog.000011使用命令恢复数据mysqlbinlog -v /var/lib/mysql/binlog.000011 --start-position601 --stop-position706 | mysql -uroot -pRoot123