第六章 mysql日志
一 错误日志
错误日志的默认存放路径是 mysql 存放数据的地方 hostname.err
1. 修改错误日志存放路径
[mysqld] log-error=/data/mysql/mysql.log
2. 查看配置命令
show variables like "%log_error%";
3. 错误日志作用
记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志
二 一般查询日志
1. 开启一般查询日志
[mysqld] general_log=on general_log_file=/data/mysql/server2.log
2. 查看配置命令
show variables like '%gen%';
3. 一般查询日志作用
记录mysql所有执行成功的SQL语句信息,可以做审计用,但很少开启
三 二进制日志
1. 二进制日志都记录了什么
已提交的数据记录, 以event的形式记录到二进制文件中
2. 二进制记录格式的3种模式
① row 行模式,即数据行的变化过程 一般都是用这种
② statement 语句模式 可能不准确 比如now()
③ mixed: 以上两者的混合模式
3. binlog的作用
备份恢复 复制
四 二进制日志管理
1. 开启二进制日志
① 会话级别临时关闭
set sql_log_bin=0
②全局打开二进制日志
[mysqld] log-bin=/data/mysql/mysql-bin
2.二进制日志记录格式(建议是row)
[mysqld] binlog-format=ROW
3. 日志同步机制
[mysqld] sync_binlog=1
4. 二进制日志需要打开的配置
vim /etc/my.cnf log-bin=/data/binlog binlog_format=row sync_binlog=1
5. 查看设置
-- 查看binlog日志是否开启 show variables like '%log_bin%'; -- 查看模式是否为row show variables like '%binlog_format%';
6. 通过二进制日志修复数据
show binary logs; show binlog events in 'my-bin.000002' show master status;
mysqlbinlog --base64-output=decode-rows -v my-bin.000002 mysqlbinlog --start-position=120 --stop-position=721 my-bin.000002 mysqlbinlog --start-position=340 --stop-position=721 my-bin.000002 >/tmp/binlog.sql
读取二进制日志 修复数据
source /tmp/binlog.log
7. 删除二进制日志
默认情况下,不会删除旧的日志文件。 根据存在时间删除日志: SET GLOBAL expire_logs_days = 90; …或者… PURGE BINARY LOGS BEFORE now() - INTERVAL 3 day; 根据文件名删除日志: PURGE BINARY LOGS TO 'mysql-bin.000010'; reset master;
五 慢日志
1. 功能
slow-log,记录所有条件内的慢的SQL语句
优化的一种工具日志。帮我们定位问题。
是将mysql服务器中影响数据库性能的相关SQL语句记录到日志文件
通过对这些特殊的SQL语句分析,改进以达到提高数据库性能的目的。
2. 慢日志设置
long_query_time --设定慢查询的阀值,超出次设定值的SQL即被记录到慢查询日志,缺省值为10s slow_query_log --指定是否开启慢查询日志 slow_query_log_file --指定慢日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log min_examined_row_limit --查询检查返回少于该参数指定行的SQL不被记录到慢查询日志 log_queries_not_using_indexes --不使用索引的慢查询日志是否记录到索引
[mysqld] slow_query_log=1 slow_query_log_file=/data/slow/slow.log long_query_time=0.5 log_queries_not_using_indexes
3. 处理慢日志
mysqldumpslow命令
mysqldumpslow -s c -t 10 /data/slow/slow.log mysqldumpslow -s at -t 10 /data/slow/slow.log
这会输出记录次数最多的10条SQL语句,
其中:
-s 是表示按照何种方式排序
c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序。
ac、at、al、ar,表示相应的倒叙。
-t 是top n的意思,即为返回前面多少条的数据;