摘要

一、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. SQL总结之增删改查

      SQL语句增删改查(总结) 一.增:有2种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:ins ...

  2. svn恢复到某一版本

    转 经常由于坑爹的需求,功能要切回到之前的某一个版本.有两种方法可以实现: 方法1: 用svn merge 1) 先 svn up,保证更新到最新的版本,如20: 2) 然后用 svn log ,查看 ...

  3. ViewPager和View的事件响应规则

    案例背景: 当我们实现viewpager的自动切换界面操作的时候,如果需要增加点击图片viewpager停止自动切换,松开手指viewpager自动切换又继续执行的逻辑,正常思维下实现代码如下所示: ...

  4. (转载)ANDROID STRINGS.XML 中的特殊字符转义

    今天项目碰到个转义特殊字符的问题,网上搜索看到,故转载,已标明出处: 项目中要在string.xml 中显示特殊符号.如@号冒号等.直接写肯定不行啦 只能考虑使用ASCII码进行显示.在XML中空格符 ...

  5. 单向链表仿LinkedList

    public class ChainTable { private Node firstNode;//第一个节点 private Node lastNode;//最后一个节点 private int ...

  6. 斗地主 (NOIP2015 Day1 T3)

    斗地主 张牌,因为它可以连在K后, 总体思路为 先出炸弹和四带二 再出三带一 再把对牌和单牌出完 记录并更新Answer,后枚举顺子,并继续向下搜索. 注意:弄明白题意,题目描述不太清楚....另外, ...

  7. .Net中jQuery.ajax()调用asp.net后台方法 总结

    利用JQuery的$.ajax()调用.Net后台方法有多种方式, 不多说了  直接上代码 前台代码 <script type="text/javascript"> $ ...

  8. 【IE6的疯狂之一】IE6中奇数宽高的BUG

    IE6真是太疯狂了.今天由于项目需要做了这么一个布局:一个外部的相对定位div,内部一个绝对定位的div(right:0), 如图: 可是在IE6下查看,却变成了right:1px的效果了: IE6还 ...

  9. foreach绑定

    目的 foreach可以将一个数组中的实体循环的进行绑定.这在将一个list显示成table时非常有用. 假设数组是observable的,当在绑定后做了add, remove,或者重新排序后,绑定会 ...

  10. html绑定

    目的 html绑定可以绑定DOM元素内的HTML内容. 示例: <div data-bind="html: details"></div> <scri ...