首页 技术 正文
技术 2022年11月23日
0 收藏 691 点赞 3,782 浏览 3087 个字

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。

http://www.cnblogs.com/shijiaqi1066/p/3859866.html

MySQL常用日志

错误日志:–log-err  记录启动,运行,停止mysql时出现的信息。

二进制日志:–log-bin  记录所有更改数据的语句,还用于复制,恢复数据库用。

查询日志:–log  记录建立的客户端连接和执行的语句。

慢查询日志:–log-slow-queries  记录所有执行超过long_query_time秒的所有查询。

更新日志:–log-update  二进制日志已经代替了更新日志,更新日志在MySQL 5.1中不再使用。

查看系统日志的相关配置信息

命令:show global variables like ‘%log%’;

MySQL日志概述

选项说明:

log:表示查询日志与慢查询日志是否开启。是一个总开关。

log_output:日志的存储方式,以FILE或以TABLE存储日志。

general_log:表示查询日志是否开启。

general_log_file:/mydata/data/mysql.log

这些值都可以使用SET语句临时修改。若需要需要永久生效,则只需要修改配置文件中的变量。

错误日志

MySQL一般默认开启了错误日志。

错误日志的记录的信息内容:

  • 服务器启动和关闭过程中的信息。
  • 服务器运行过程中的错误信息。
  • 事件调度器运行一个事件时产生的信息。
  • 在从服务器上启动从服务器进程时产生的信息。

日志一般位于数据目录下datadir 。错误日志的名称一般为 主机名.err 。

错误日志的配置

  • log-error :是否启用错误日志。
  • log-warnings:是否启用警告日志。

二进制日志

记录修改数据或有可能引起数据改变的MySQL语句。

日志的位置

使用–log-bin=[file_name]选项启动时,mysqld开始将数据变更情况写入日志文件。没有指定file_name值,默认名为主机名后跟“-bin”。若给出了文件名,但没包含路径,则问默认写入datadir指定的目录中。

日志的格式

MySQL5.5 中,二进制日志格式分为三种,通过–binlog-format设置:

STATEMENT

MySQL5.1 之前的版本都采用这种方式,日志中记录的都是语句。mysqlbinlog工具,可以清晰地看到每条语句的文本。这种格式的优点是日志记录清晰易读,日志量少,对IO影响小。缺点是在某些情况下slave的日志复制会出错。

ROW

MySQL 5.1.11之后,出现了这种新的日志格式。它将每一行的变更记录到日志中,而不是记录SQL语句。这种格式的优点是会记录每一行数据的变化细节,不会出现无法复制。缺点是日志量,对IO影响大。

MIXED

目前MySQL默认的日志格式。该格式混合了STATEMENT和ROW两种日志,避免两种各自的缺点,尽可能利用了两种的优点。默认情况下采用STATEMENT,特殊情况下使用ROW。

    • 使用了DML语句。
    • 使用了临时表。
    • 使用了UUID()、USER()、CURRENT_USER()、FOUND_ROWS()、ROW_COUNT()等不确定函数。这种函数在主从中的值不一定相同。
    • 表的存储引擎为NDB,这时对于表的DML操作都会以ROW格式记录。
    • 使用了INSERT DELAY语句。
    • 使用了用户定义函数。

日志的读取

使用mysqlbinlog命令读取二进制日志。

日志的删除

对于OLTP系统,每条会生成大量的二进制日志。日志若长时间不清楚会浪费很大的磁盘空间。所以需要定期的清理二进制日志。

方法1

命令:RESTART MASTER;

该命令会删除所有的binlog日志。新日志编号重新从“000001”开始。

方法2

命令:PURGE MASTER LOGS TO ‘mysql-bin.******’;

该命令删除“******”编号之前所有的日志。

方法3

命令:PURGE MASTER LOGS BEFORE ‘yyyy-mm-dd hh24:mi:ss’;

该命令删除日志为“yyyy-mm-dd hh24:mi:ss”之前的所有日志。

方法4

设置参数expire_logs_days = # ,此参数的含义是设置日志的过期天数,过了指定的天数后,日志将会被自动删除,这样有利于DBA管理日志的工作量。

其他选项

–binlog-do-db=db_name

告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,应将更新记录到二进制日志中。其它所有没有明显指定的数据库被忽略。

–binlog-ignore-db=db_name

告诉主服务器,如果当前的数据库(即USE选定的数据库)是db_name,不将更新保存到二进制日志中。

若数据库启动时使用选项–binlog-do-db=DB_A,使用语句“use DB_B”置DB_B为当前数据库,此时使用update语句修改DB_A的表数据时出现如下情况:

  • 数据库DB_B不在允许binlog的列表内,该语句不写入二进制日志文件。
  • 数据库DB_B在允许binlog的列表内,该语句写入二进制日志文件。

查询日志

MySQL默认不启用查询日志。查询日志不光会记录查询语句,同样也会增删改有相应记录。由于日志量非常大,浪费磁盘IO,所以一般不建议开启。

查询日志的格式是纯文本的,可以直接读取。

慢查询日志

慢查询日志可以记录长时间的查询。慢查询默认是关闭的,由于慢查询日志对系统性能的问题很有帮助,所以建议开启,并经常查看。

慢查询的时长,不是光指的是sql语句的查询时间。是从查询启动开启到结束的时长,任何因为阻塞而导致时间也会包含在内。例:因为表锁而导致sql语句超时。

有关慢查询日志功能的相关参数说明:

log-slow-queries

指定日志文件存放位置,该目录文件一定要有写的权限。可以不用设置,系统会给一个缺省的文件host_name-slow.log

long_query_time

SQL执行时间阈值,慢查询的单位为秒,可以精确到微秒。10.000000表示10秒整。

打开mysql的慢查询日志很简单,只需要在mysql的配置文件里的[mysqld]下面加上

log-slow-queries=mysql_slow.log
long_query_time=

慢查询日志用来收集那些花费太长时间(超过指定时间)执行的SQL语句,该指定时间由long_query_time服务器变量设定。

–log-slow-queries[=file_name]选项启动慢查询日志。如果没有给出file_name值,默认未主机名,后缀为“-slow.log”;如果给出文件名,但不是绝对路径名,文件则写入数据目录。

查询慢查询日志相关的常量

命令:show global variables like ‘%slow%’;

MySQL日志概述

若slow_query_log和log_slow_queries显示为on,那说明服务器的慢查询日志已经开启了。

slow_launch_time跟慢查询日志没有任何关系, 它代表的是thread create的一个阈值。

查询慢查询日志的阈值

命令:show global variables like ‘long_query_time’;

MySQL日志概述

使用mysqldumpslow命令可以快速定位系统的SQL瓶颈。

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处。LaplaceDemon/SJQ。

http://www.cnblogs.com/shijiaqi1066/p/3859866.html

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,985
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,501
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,345
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,128
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,763
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,839