陕西网站建站,物联网网站的建设和维护,做一个网站成本是多少,公司网站开发人员的的工资多少钱为什么80%的码农都做不了架构师#xff1f; MySQL日志记录了MySQL数据库日常操作和错误信息#xff0c;MySQL总共有四种类型的日志#xff0c;通过分析这些日志可以查询到MySQL的运行情况、用户操作、错误信息等#xff0c;可以为MySQL的管理和优化提供必要… 为什么80%的码农都做不了架构师 MySQL日志记录了MySQL数据库日常操作和错误信息MySQL总共有四种类型的日志通过分析这些日志可以查询到MySQL的运行情况、用户操作、错误信息等可以为MySQL的管理和优化提供必要信息。 1、日志类型 MySQL总共有四种类型的日志如下 错误日志记录Mysql服务的启动、运行或停止MySQL服务时出现的问题默认开启。查询日志记录建立连接的客户端连接和执行的语句。二进制日志记录所有更改数据的语句可以用于数据复制。慢查询日志记录所有执行时间超过设定时间long_query_time的查询 四种日志仅错误日志默认开启其他需要手动配置开启启动日志会降低服务器性能、而且会占用大量磁盘空间。 什么是刷新日志 刷新日志可以强制MySQL关闭旧的日志文件重新打开新的日志文件 即切换到新的日志文件例如错误日志当手工删除后无法重新建立新的日志文件则需要进行刷新日志操作才会重新创建日志文件。 如何操作 可在服务器端执行 mysqladmin -u root -p flush-logs 或在客户端执行 flush logs 2、二进制日志 1、原理介绍 二进制日志主要记录MySQL数据库的变化主要运用场景为 MySQL replication 例如主从复制主主复制环形复制不常用从机通过IO线程读取主机的二进制日志 生成自己的中继日志然后自己的SQL线程通过中继日志进行复制数据功能简单点说就是把SQL再执行一遍主要原理详细如下图 2、开启二进制日志 在my.cnf文件 [MySQLd]组下进行如下配置 log-bin[path/filename] 例如 log-bin log-binmysql-bin log-bin/home/zhpt/logs/mysql-bin 以上三种方式都可开启二进制日志 其他配置 expire_logs_days10 #自动清除过期日志的时间
max_binlog_size100M #设置单个二进制日志文件的大小默认为1G不能设置超过1G或小于4096B 3、查看二进制日志及其设置 show variables like log_% 结果如下 也可使用 show binary logs 查看二进制日志文件的个数及文件名如下图 3、错误日志 MySQL错误日志记录了MySQL服务在运行中发生的任何严重错误信息此错误类型默认开启。 1、查看日志文件配置 show variables like log_error% 结果如下所示 2、修改日志文件路径 在my.cnf文件 [MySQLd]组下进行如下配置 log-error/home/zhpt/logs/MySQL_Ruoli.err 错误日志直接以文件的形式存储于磁盘上可随时手工删除删除后需要执行刷新日志才可生成新的错误日志。 4、通用查询日志 在my.cnf文件 [MySQLd]组下进行如下配置 开启 通用查询日志 log[path/filename] 通用查询日志记录了用户的所有操作可使用编辑工具直接查看开启通用查询日志后会降低数据库性能增大磁盘占用不建议在生产环境中使用。 5、慢查询日志 慢查询日志是MySQL提供的用来记录执行时间过长的查询语句为数据库性能优化提供重要依据。 1、查看慢查询日志开启状态及存储位置 mysql show variables like slow_query%;
-------------------------------------------------------------
| Variable_name | Value |
-------------------------------------------------------------
| slow_query_log | ON |
| slow_query_log_file | /mysql/data/localhost-slow.log |
------------------------------------------------------------- 如上所示此台服务器已经开启了慢查询日志功能慢查询日志文件路径也在其data目录下。 2、查看慢查询日志超时时间 mysql show variables like long_query_time;
----------------------------
| Variable_name | Value |
----------------------------
| long_query_time | 5.000000 |
---------------------------- 3、开启慢查询日志 前面提到过慢查询日志并不是默认开启的开启慢查询可以通过如下方式 通过配置文件设置此种修改方式为永久生效。 在my.cnf文件 [MySQLd]组下进行如下配置开启慢查询日志如下 slow_query_log ON
slow_query_log_file /usr/local/mysql/data/slow.log
long_query_time2 #设置超时时间为2秒默认为10秒 通过设置全局变量设置此种方式重启后失效。 将 slow_query_log 全局变量设置为“ON”状态 mysql set global slow_query_logON; 设置慢查询日志存放的位置 mysql set global slow_query_log_file/usr/local/mysql/data/slow.log; 查询超过2秒就记录 mysql set global long_query_time2; 开启记录没有使用索引的查询语句 mysql set global log-queries-not-using-indexes on 4、慢查询日志分析 上图是一条慢查询日志的内容我们进行分析时主要看的就是执行信息包括执行时间Query_time、发送行数Rows_sent、扫描行数Rows_examined,通过降低扫描行数可以明显降低执行时间。 如果扫描行数明显大于发送行数说明此条SQL的索引命中率很低可以优先进行优化。 关于降低降低扫描行数来提升查询效率最直接的例子就是MySQL的分页查询。 具体可以另一篇文章最快速的办法解决MySQL数据量增大之后翻页慢问题 转载于:https://my.oschina.net/ruoli/blog/1625695