摘要

一、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. winServer2008下安装SqlServer2008数据库

    1 安装文件包 文件名 cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso SHA1 0EEFF017B21635DF33F33C ...

  2. nohup及/dev/null使用

    1.nohup    ----后台执行,执行记录默认输出到当前目录下的nohup.out文件         nohup find /etc -name passwd 2./dev/null介绍 把/ ...

  3. Exchange 2010 实用小技巧

    #Exchange安装必须开启防火墙服务 #批量建用户: for /f  "tokens=1,2,3,4,5,6,7 delims=," %a in (c:\users.csv) ...

  4. 自己封装的tc

    封装弹窗 html <head> <script src="jquery.js"></script> <script src=" ...

  5. HDU 5869 Different GCD Subarray Query

    离线操作,树状数组,$RMQ$. 这个题的本质和$HDU$ $3333$是一样的,$HDU$ $3333$要求计算区间内不同的数字有几个. 这题稍微变了一下,相当于原来扫描到$i$的之后是更新$a[i ...

  6. 【bootstrap】时间选择器datetimepicker和daterangepicker

    在bootstrap中的时间选择器有两种:dateTimePicker和dateRangePicker 1.dateTimePicker好像是官方嫡插件:   需要的文件: <link rel= ...

  7. 顶层const和底层const

    As we’ve seen, a pointer is an object that can point to a different object. As a result,we can talk ...

  8. com.google.common.collect.Lists#transform使用注意

    /** * Returns a list that applies {@code function} to each element of {@code * fromList}. The return ...

  9. mac 终端下ssh 登录远程服务器不发输入中文

    转:https://segmentfault.com/q/1010000000150673 用Mac的iterm2 ssh连上去,终端显示中文乱码,也不能输入中文,然而本地终端可以显示和输入. 解决方 ...

  10. 浅谈C#委托和事件

    委托给了C#操作函数的灵活性,我们可使用委托像操作变量一样来操作函数,其实这个功能并不是C#的首创,早在C++时代就有函数指针这一说法,而在我看来委托就是C#的函数指针,首先先简要的介绍一下委托的基本 ...