Mysql 日志详解
2016-06-27 21:00
666 查看
1. Mysql 日志分类
错误日志查询日志
慢查询日志
事务日志
二进制日志
中继日志
2. 错误日志
首先需要明确的是, 错误日志中记录的未必都是错误日志,在Mysql的错误日志中,存储以下日志信息1. 服务器启动和关闭过程中的信息
2. 服务器运行过程中的错误信息
3. 事件调度器运行一个事件时产生的信息
4. 在从服务器上启动从服务器进程时产生的信息
日志参数变量都是
全局定义的,会话级别是没有的.
2.1. 默认配置
错误日志目录datadir=/dir/to/mysql/datadir
错误日志文件名称
hotname.log
2.2. 参数配置
log_error = on|文件路径是否启用错误日志,
on表示开启,
文件路径表示指定自定义日志路径
log_warnings = 1|0是否记录warnings信息到错误日志中
3. 查询日志
3.1 参数配置
log = on|off是否开启日志功能, 这个设置包含了
查询日志和
慢查询日志
general_log = on|off是否开启查询日志
general_log_file = /path/to/file指定查询日志的位置
log_output = FILE|table日志输出的位置,
这个指令对慢查询日志也起作用
4. 慢查询日志 建议开启,可以定位服务器性能问题
4.1. 参数配置
slow_query_log = on|off开启慢查询
slow_query_log_file = /path/to/file指定保存慢查询文件的位置
long_query_time=5(s)超过多长时间表示慢查询
可精确到微妙, 从语句开始到结束,所有时间都算, 哪怕阻塞时间也算
4.2. 分析慢查询的工具
explain sql statementsshow profile for query num
需要开启profiling
5. 事务日志
事务日志是被轮转的,一启动就分配完毕了, 并且是连续的存储空间,默认每个文件的大小为5M
主要功能:将随机I/O转换为顺序I/O
ib_logfile0,
ib_logfile1, 这两个文件如果坏了那么对于mysql来说是致命的, 所以建议事务log使用
raid
5.1 参数配置
innodb_log_group_home_dir一般事务日志都要求两个以上,一个使用满了,在使用另一个,如此往复循环交替使用
innodb_log_file_in_group日志组中的日志文件个数,默认
2个
innodb_log_file_size每个日志文件的大小, 默认
5M, 太大了会导致恢复起来比较慢
innodb_log_buffer_sizeinnodb日志
内存缓冲区大小, 日志是先写入到程序的内存缓冲区中,
然后才同步到事务日志文件中的
innodb_flush_log_at_trx_commit在事务提交的时候,innodb是否同步刷新日志从缓冲区到事务日志文件中去的 (0,1,2)三种可选
设置为
1最靠谱
这个参数是提高innodb性能的参数
innodb_mirrored_log_groups=1日志组的镜像备份, 备份一定要放到不同的磁盘上
6. 二进制日志
6.1 参数配置
log_bin = on|文件路径是否启用二进制日志,
on表示开启,
文件路径表示指定自定义日志路径, 默认路径在
datadir指定的路径下,
只要重启了服务, binlog二进制日志就会自己滚动一个新的, 或者使用
flush logs手动滚动日志
记录的信息主要是记录修改数据或有可能引起数据改变的MySql语句, 记录时间,操作时长,等等信息
日志格式: 基于(
语句,
row,
mixed) 默认
mixed
每一个二进制日志叫做一个
Binary log event(二进制日志事件), 每一个二进制日志事件都有自己的元数据(
meta data)信息, 时间,操作时长….
每个二进制日志的上限是
1G
binlog_cache_size默认启动的时候二进制的大小
binlog_format = (statement|row|mixed)
binlog_stmt_cache_size基于语句格式的二进制日志缓存的大小
expire_logs_days=100表示100天之前的日志自动清理掉
建议别设置,还是自己手动purge最好
sql_log_bin会话级别临时关闭或开启二进制日志的控制选项
set session sql_log_bin=0
sync_binlog=1同步binlog的时机, 每执行一次事务提交,就同步二进制日志从内存中到磁盘中去,
建议开启
max_binlog_cache_size最大二进制缓存大小
max_binlog_size最大二进制日志大小,默认
1G,当达到这个值以后会自动滚动的
max_binlog_stmt_cache_size最大基于语句二进制缓存大小
6.2 二进制日志文件的删除操作
mysql> PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }
Examples:
PURGE BINARY LOGS TO ‘mysql-bin.010’;PURGE BINARY LOGS BEFORE ‘2008-04-02 22:46:26’;
purge binary logs to 'mysql-bin.000009'删除
000009之前的日志文件
6.3 二进制日志的查看
mysqlbinlog mysql-bin.000015
--start-datetime=#
--stop-datetime=#
--start-position=#
--stop-position=#
还可以使用
-u,
-p,
-h去读取其他主机上的
二进制日志
show binary logs
show master logs
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
7. 中继日志
在复制过程中产生的日志一个线程读取别人的二进制日志,存到本地叫做
中继日志,然后本地在开启一个线程去读取中继日志在本地做
回放,就完成了数据的同步
7.1 参数配置
max_relay_log_size最大中继日志大小
relay_log_info_file=relay-log.info中继日志存放的文件
相关文章推荐
- mysql一主多从同步配置
- mysql主从同步配置
- sql(mysql)
- mysql安装及卸载
- MYSQL添加一列具体步骤
- MySQL存储引擎
- mysql数据库优化
- Spark insertIntoJDBC找不到Mysql驱动解决方法
- mysql: error while loading shared libraries: libmysqlclient
- mysql 基本操作 alter
- mysql auto_increment 初始值从0开始
- mysql 主从复制
- 【Mysql】mysql查询超时JDBC源码浅析
- jsp中使用动态数据进行mySQL数据库的两种操作方法
- mysqldump和mydumper的比较
- MYSQL性能查看(命中率,慢查询)
- MySQL 索引分析
- window下mysql安装以及问题解决方法
- MySQL出现SQL Error (2013)连接错误的解决方法
- MySQL行级锁、表级锁、页级锁详细介绍