MySQL日志管理

MySQL日志管理

 

========================================================

  • 错误日志: 记录 MySQL 服务器启动、关闭及运行错误等信息
  • 二进制日志: 又称binlog日志,以二进制文件的方式记录数据库中除 SELECT 以外的操作
  • 查询日志: 记录查询的信息
  • 慢查询日志: 记录执行时间超过指定时间的操作
  • 中继日志: 备库将主库的二进制日志复制到自己的中继日志中,从而在本地进行重放
  • 通用日志: 审计哪个账号、在哪个时段、做了哪些事件
  • 事务日志 或称redo日志,记录Innodb事务相关的如事务执行时间、检查点等

========================================================

日志类型记录信息
日志文件记入文件中的信息类型
错误日志记录启动、运行或停止时出现的问题。
查询日志记录建立的客户端连接和执行的语句。
二进制日志记录所有更改数据的语句。主要用于复制和即时点恢复。
慢日志记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。
事务日志记录InnoDB等支持事务的存储引擎执行事务时产生的日志。




一、错误日志


错误日志主要记录如下几种日志:
服务器启动和关闭过程中的信息
服务器运行过程中的错误信息
事件调度器运行一个时间是产生的信息
在从服务器上启动从服务器进程是产生的信息

错误日志定义:可以用--log-error[=file_name]选项来指定mysqld保存错误日志文件的位置。
如果没有给定file_name值,mysqld使用错误日志名host_name.err 并在数据目录中写入日志文件。如果你执行FLUSH LOGS,错误日志用-old重新命名后缀并且mysqld创建一个新的空日志文件。(如果未给出--log-error选项,则不会重新命名)。
查看当前错误日志配置 mysql> SHOW GLOBAL VARIABLES LIKE '%log_error%';


是否记录警告日志 mysql> SHOW GLOBAL VARIABLES LIKE '%log_warnings%';

二、bin-log
1. 启用
# vim /etc/my.cnf
[mysqld]
log-bin[=dir/[filename]] //目录权限必须mysql用户可写
# service mysqld restart

注意:MySQL 5.7.3以后版本,启用bin-log功能,需要设置server-id
2. 暂停
//仅当前会话
SET SQL_LOG_BIN=0;
SET SQL_LOG_BIN=1;

3. 查看
查看二进制日志的工具为:mysqlbinlog

二进制日志包含了所有更新了数据或者已经潜在更新了数据(例如,没有匹配任何行的一个DELETE)的所有语句语句
以“事件”的形式保存,它描述数据更改。二进制日志还包含关于每个更新数据库的语句的执行时间信息。它不包含没有修改任何数据的语句
二进制日志的主要目的是在数据库存在故障时,恢复时能够最大可能地更新数据库(即时点恢复),因为二进制日志包含备份后进行的所有更新。
二进制日志还用于在主复制服务器上记录所有将发送给从服务器的语句。

查看全部:

# mysqlbinlog mysql.000002



按时间:

# mysqlbinlog mysql.000002 --start-datetime="2012-12-05 10:02:56"

# mysqlbinlog mysql.000002 --stop-datetime="2012-12-05 11:02:54"

# mysqlbinlog mysql.000002 --start-datetime="2012-12-05 10:02:56" --stop-datetime="2012-12-05 11:02:54"


按字节数:

# mysqlbinlog mysql.000002 --start-position=260
# mysqlbinlog mysql.000002 --stop-position=260
# mysqlbinlog mysql.000002 --start-position=260 --stop-position=930


4. 截断bin-log(产生新的bin-log文件)
a. 重启mysql服务器
b. # mysql -uroot -p123 -e 'flush logs'

5. 删除bin-log文件
# mysql -uroot -p123 -e 'reset master'
二进制日志文件不能直接删除的,如果使用rm等命令直接删除日志文件,可能导致数据库的崩溃。
必须使用命令PURGE删除日志,语法如下:PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }

三、查询日志
启用通用查询日志

# vim /etc/my.cnf
[mysqld]
log[=dir\[filename]]
# service mysqld restart




四、慢查询日志
启用慢查询日志

# vim /etc/my.cnf
[mysqld]
log-slow-queries[=dir\[filename]]
long_query_time=n
# service mysqld restart


 

MySQL 5.6:
slow-query-log=1
slow-query-log-file=slow.log
long_query_time=3



查看慢查询日志
测试:BENCHMARK(count,expr)
SELECT BENCHMARK(50000000,2*3);

默认与慢查询相关变量:mysql> SHOW GLOBAL VARIABLES LIKE '%slow_query_log%';
默认没有启用慢查询,为了服务器调优,建议开启
开启方法:SET GLOBAL slow_query_log=ON;
当前生效,永久有效配置文件中设置
使用mysqldumpslow命令获得日志中显示的查询摘要来处理慢查询日志
# mysqldumpslow slow.log 那么多久算是慢呢?如果查询时长超过long_query_time的定义值(默认10秒),即为慢查询:
 

mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南宫乘风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值