摘要

一、MySQL日志

  1.1 查询日志

  1.2 慢查询日志

  1.3 错误日志

  1.4 二进制日志

一、 MySQL日志

MySQL服务器上一共有六种日志:错误日志,查询日志,慢查询日志,二进制日志,中继日志以及事务日志。

1.1 查询日志

查询日志就是用来记录查询的,但是查询日志会增加很多的磁盘I/O,所以如非处于调试目的,不建议开启查询日志

general_log: ON表示开启,OFF表示关闭,默认是关闭

log_output: 日志输出类型,FILE|TABLE|NONE

general_log_file=HOSTNAME.log 日志输出路径

#General logging.:
log-output=FILE
general-log=
general_log_file="filename.log"

1.2 慢查询日志

执行时长(包括等待CPU/IO的时间)超过long_query_time定义时长的查询。慢查询日志开销较小,可以用于定位性能问题,建议开启

相关参数:

  slow_query_log = {ON|OFF}:是否启用慢查询日志
  slow_query_log = /path/to/somefile: 日志文件路径

  log_slow_filter = admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
  log_slow_rate_limit = 限制记录日志的速率
  log_slow_verbosity = 慢查询日志详细程度,越详细越容易分析,消耗越大

demo:

mysql> SHOW VARIABLES LIKE 'slow_query_log%';
+---------------------+--------------------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /usr/local/var/mysql/upstreamdeMac-mini-slow.log |
+---------------------+--------------------------------------------------+

1.3 错误日志

错误日志不仅仅记录错误信息,它记录的事件有:

-mysqld启动和关闭过程中输出的信息;
-mysqld运行中产生的错误信息;
-event scheduler运行一个event时产生的日志信息;
-在主从复制架构中的从服务器上启动从服务器线程时产生的日志信息;

  log_error = {ON | OFF | /path/to/somefile}

    定义错误日志文件。ON的话有默认路径
  log_warnings = {ON|OFF}:是否记录警告信息于错误日志中;

1.4 二进制日志

  记录了MySQL数据库中所有与更新相关的操作,常用于恢复数据库和主从复制

(1) 查看日志文件

显示所有的日志文件:

mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 276665 |
+------------------+-----------+
1 row in set (0.03 sec)

显示当前正在使用的日志文件:

mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin. | | | |
+------------------+----------+--------------+------------------+
row in set (0.00 sec)

(2) 查看日志内容

SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]

(3) 日志文件说明

有三种格式:

  基于"语句"记录: statement,只记录语句

  基于"行"记录:row,记录数据,因此数据量更大

  混合模式:mixed,系统自行判定

由二部分文件构成:

  日志文件:mysql-bin.文件名后缀,是二进制格式

  索引文件:mysql-bin.index 是文本格式

(4) 相关变量

  sql_log_bin=ON|OFF 是否记录二进制日志

  log_bin={ON | OFF |/PATH/TO/BIN_LOG_FILE}:  记录位置

  binlog_format = {statement | row | mixed} 日志格式

  max_binlog_size=1073741824 单个二进制日志文件的最大体积,默认是1G,到达1G会自动滚动

  max_binlog_cache_size=18446744073709547520 日志io相关,数据内存缓存

  max_binlog_stmt_cache_size = 18446744073709547520 日志io相关,语句内存缓存

  expire_logs_days=0 自动日志清理功能 0表示永不清理

  sync_bin_log=1 | 0 为了尽量不影响性能,日志的写入也是异步的,设定多久同步一次二进制日志文件

            设定0表示不同步,可能会影响数据

(5) 客户端工具: mysqlbinlog

  -j, start-position=#: 从指定的事件位置查看

  --stop-position=#: 只显示到指定的事件位置

  --start-datetime=name

  --stop-datetime=name

    YYYY-MM-DD hh:mm:ss

  -u
  -h
  -p

日志信息格式说明:

# at
# :: server id end_log_pos Query thread_id= exec_time= error_code=
SET TIMESTAMP=/*!*/;
ALTER TABLE `test`.`t1`
ADD INDEX `INDEX_T1_NAME` (`name` ASC)
/*!*/;
# at 事件发生的日期和时间;( ::)
事件发生在服务器的标识(server id)
事件的结束位置:(end_log_pos )
事件的类型:(Query)
事件发生时所在的服务器执行此事件的线程的ID:(thread_id=)
语句的时间戳与将其写入二进制文件中的时间差:(exec_time=)
错误代码:(error_code=)
事件内容:
SET TIMESTAMP=/*!*/;
ALTER TABLE `test`.`t1`
ADD INDEX `INDEX_T1_NAME` (`name` ASC)
/*!*/; GTID事件专属:
事件所属的全局事务的GTID:(GTID --)

演示:

c、提取指定position位置的binlog日志并输出到压缩文件
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 |gzip >extra_01.sql.gz d、提取指定position位置的binlog日志导入数据库
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 | mysql -uroot -p e、提取指定开始时间的binlog并输出到日志文件
# mysqlbinlog --start-datetime="2014-12-15 20:15:23" /opt/data/APP01bin.000002 --result-file=extra02.sql f、提取指定位置的多个binlog日志文件
# mysqlbinlog --start-position="120" --stop-position="332" /opt/data/APP01bin.000001 /opt/data/APP01bin.000002|more g、提取指定数据库binlog并转换字符集到UTF8
# mysqlbinlog --database=test --set-charset=utf8 /opt/data/APP01bin. /opt/data/APP01bin. >test.sql h、远程提取日志,指定结束时间
# mysqlbinlog -urobin -p -h192.168.1. -P3306 --stop-datetime="2014-12-15 20:30:23" --read-from-remote-server mysql-bin.000033 |more i、远程提取使用row格式的binlog日志并输出到本地文件
# mysqlbinlog -urobin -p -P3606 -h192.168.1. --read-from-remote-server -vv inst3606bin. >row.sql

   

 

MySQL Logs的更多相关文章

  1. (转)How to Use Elasticsearch, Logstash, and Kibana to Manage MySQL Logs

    A comprehensive log management and analysis strategy is vital, enabling organizations to understand ...

  2. 关于删除MySQL Logs的一点记录

    五一前,一个DBA同事反馈,在日常环境中删除一个大的slow log文件(假设文件大小10G以上吧),然后在MySQL中执行flush slow logs,会发现mysqld hang住. 今天尝试着 ...

  3. Mysql日志解析

    修改Mysql配置 Mysql配置地址为: C:\Program Files (x86)\MySQL\MySQL Server 5.5 如果无法修改可以把my.ini拷贝出来,修改完后,再拷贝回去! ...

  4. Mysql数据库主从心得整理

    管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验所写,整理了一下,分享给各位同行,希望对 ...

  5. MHA+Atlas+mysql一主一从开启gtid安装配置与实验

    各节点架构 (说明:生产环境有两个节点可以组成一套完整集群,我是测试环境,因此对于manager以及atlas和binlog server都是单点,如果生产环境,相应的将manager以及atlas和 ...

  6. mysql学习(3)-linux下mysql主从复制

    前言:为什么MySQL要做主从复制(读写分离)?通俗来讲,如果对数据库的读和写都在同一个数据库服务器中操作,业务系统性能会降低.为了提升业务系统性能,优化用户体验,可以通过做主从复制(读写分离)来减轻 ...

  7. MYSQL的深入学习--优化步骤

    MySql优化的一般步骤 1.通过show status 命令了解各种sql的执行效率 SHOW STATUS提供msyql服务器的状态信息 一般情况下,我们只需要了解以”Com”开头的指令 show ...

  8. Mysql的实时同步 - 双机互备

    设置方法: 步一设 A 服务服 (192.168.1.43) 上用户为 backup, 123456 , 同步的数据库为test; B 服务服 (192.168.1.23) 上用户为 root, 12 ...

  9. 【转】MYSQL启用日志,和查看日志

    转载地址:http://wasabi.iteye.com/blog/318962 mysql有以下几种日志:     错误日志:     -log-err     查询日志:     -log     ...

随机推荐

  1. 文档在线预览开源实现方案二:OpenOffice + pdf.js

    文档在线预览的另一种实现方式采用的技术栈是OpenOffice + pdf.js, office文档转换为pdf的工作依然由OpenOffice的服务来完成,pdf生成后我们不再将其转换为其他文件而是 ...

  2. 如何运用xp_cmdshell 执行多行cmd命令

    因为需要利用sql  脚本调用外部程序,所以尝试xp_cmdshell 命令,发现其默认只能执行一行命令,最后找到了下面方法: 将多行cmd 命令处理成bat文件,然后直接利用所在路径+文件来执行: ...

  3. System.Data.DbType和数据库映射关系

    有如下类型的映射对照: System.Data.SqlClient.SqlDbType  System.Data.OleDb.OleDbType System.Data.Odbc.OdbcType S ...

  4. 一个App从创意到最终上架到App Store里的整个过程是怎样的?

    一个App从创意到最终上架到App Store里的整个过程是怎样的? 制作App需要什么软件?应该看什么书?需要哪些设备?推到App Store里,需要注册什么网站?是否需要付费?需要什么证书之类的? ...

  5. 引用Excel.dll 时找不到类型怎么办

    将引用(Microsoft.Office.Interop.Excel)的属性"嵌入互操作类型"由True修改为False即可

  6. Mac OS启动服务优化高级篇(launchd tuning)

    Mac下的启动服务主要有三个地方可配置:1,系统偏好设置->帐户->登陆项2,/System/Library/StartupItems 和 /Library/StartupItems/3, ...

  7. js事件监听-addEventListener (w3c标准) 和 attachEvent(ie)

    研究了一个小时,没看懂这两个属性 window.onload = function(){ var oDiv = document.getElementById("J_myDiv") ...

  8. ElasticSearch(7)-排序

    引用自ElaticSearch权威指南 一.排序 相关性排序 默认情况下,结果集会按照相关性进行排序 -- 相关性越高,排名越靠前. 这一章我们会讲述相关性是什么以及它是如何计算的. 在此之前,我们先 ...

  9. 【Time系列一】datetime的妙用

    今天在弄个自动关机小脚本的时候,遇到了时间转换的问题,也难怪,以前没学过, 不能怪我不会哦! 首先,先学会打印出当前时间的几种方式 参考开源社区:  http://my.oschina.net/u/1 ...

  10. Regmon7.04绿色版(注册表变动实时监视工具)

    Regmon V7.04 简繁中文绿色版 软件大小: 155KB软件语言: 简体中文运行环境:Win9x/NT/2000/XP/2003/软件类别:国外软件 / 免费版 / 系统其它Regmon Re ...