摘要

一、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. Ubuntu中Qt5.7.0无法输入中文

    把libfcitxplatforminputcontextplugin.so复制到安装的Qt目录下的两个文件夹中 sudo apt install fcitx-frontend-qt5 sudo cp ...

  2. ManualResetEvent和AutoResetEvent的区别

    在讨论这个问题之前,我们先了解这样一种观点,线程之间的通信是通过发信号来进行沟通的.(这不是废话) 先来讨论ManualResetEvent,讨论过程中我会穿插一些AutoResetEvent的内容, ...

  3. UGUI事件系统

    UGUI系统 将UI可能触发的事件分为12个类型,即EventTriggerType枚举的12个值. PointerEnter-- PointerExit-- PointerDown-- Pointe ...

  4. [HMLY]5.模仿喜马拉雅 FM

    项目介绍: 文:HansRove(github)XiMaLaYa-by-HansRove- 仿做喜马拉雅, 对AVFoundation框架的一次尝试   软件环境: iOS9.1硬件环境: Mac O ...

  5. Unity人工智能学习—确定性AI算法之追踪算法二

    转自:http://blog.csdn.net/zhangxiao13627093203/article/details/47658673 上一篇讲到了追踪算法的比较简单的形式,看上去比较假,因为AI ...

  6. TCP滑动窗口控制流量的原理

    TCP的滑动窗口机制       TCP这个协议是网络中使用的比较广泛,他是一个面向连接的可靠的传输协议.既然是一个可靠的传输协议就需要对数据进行确认.TCP协议里窗口机制有2种:一种是固定的窗口大小 ...

  7. Python学习笔记——基础篇【第六周】——PyYAML & configparser模块

    PyYAML模块 Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation 常用模块之Co ...

  8. HDOJ_就这么个烂题总是WA先放这把

    #include<stdio.h> __int64 A[100]={0}; __int64 B[100]={0}; __int64 SUM[100]={0}; int main() {in ...

  9. 运动框架实现思路(js)

    思路:速度.(改变left,right,width,height,opacity) 2.缓冲动画. 3.多物体运动. 4.任意值变化. 5.链式运动. 6.同时运动.

  10. Zeppelin0.5.6使用hive解释器

    此zeppelin为官方0.5.6版,可能还在孵化阶段,可能出现一些bug吧. 配置 cp zeppelin-env.sh.template zeppelin-env.sh vi zeppelin-e ...