数据库日志

1.日志介绍
(1)mysql日志的分类

  • 错误日志:记录mysql服务的启动、运行或停止mysql服务时出现的问题
  • 二进制日志:记录所有更改数据的语句,可以用于数据的复制
  • 查询日志:记录建立的客户端连接和执行的语句
  • 慢查询日志:记录所有执行时间超过long_query_time的所有查询或不使用索引查询。
    默认的情况下,所有的日志创建于mysql数据目录中,通过刷新日志,可以强制mysql关闭或重新打开日志文件;当执行一个FLUSH LOGS或mysqladmin flush-logs或者mysqladmin refresh时,将会刷新日志。
    (接替日志:若使用mysql复制功能,在复制服务器上可以维护更多的日志文件)
    启动mysql日志功能会降低Mysql数据库的性能。
    2.二进制日志
    (1)二进制日志主要记录mysql数据库的变化,里面包含了所有更新了的数据或者已经潜在更新了的数据的语句。语句以“事件”形式保存,描述数据的更改。
    (2)使用二进制日志的主要目的就是最大可能的恢复数据库,因为二进制日志包含备份后进行的所有更新。
    (3)启动和设置二进制日志
    默认情况下二进制日志是关闭的,可以通过修改mysql的配置文件来启动和设置二进制日志。
    my.ini中[mysqld]中:
log-bin[=path/[filename]]
expire_logs_days=10
max_binlog_size=100M

log-bin定义开启二进制日志;path:日志文件所在的目录路劲
filename:日志文件的名称;
expire_logs_days:定义mysql清除过期日志的时间,即二进制日志自动删除的天数,默认值为0,,表示没有删除。当mysql启动或者刷新二进制日志时可能删除该文件。
max_binlog_size:定义单个文件的大小限制,若超过给定值,日志会发生回滚(关闭当前日志,重新打开一个新的日志文件),不能将该变量设置为大于1GB或小于4096字节。默认值为1GB
天假完毕后,关闭并重新启动mysql服务就可以查看二进制日志,通过show variables语句来查询日志设置。
注:此处不知道是mysql5.6存在BUG还是什么问题,在使用上述代码后,可以产生日志文件,但是使用show varibales like ‘log_%’;显示的log_bin状态一直是OFF,而不会改变为ON状态。
(4)如果要改变日志文件的目录和名称,需要对my.ini中log_bin参数做修改log_bin="d:/MySQL/log/binlog"
(5)查看二进制文件show binary logs
(6)数据库文件最好不要与日志文件放在同一个磁盘,这样,当数据库文件所在磁盘发生故障时,可以使用日志文件恢复数据。
(7)删除二进制文件
删除所有二进制文件

reset master;

删除指定日志文件
第一种指定文件名,执行该命令将删除文件名编号比指定文件名编号小的所有日志文件
第二种指定日期,执行该命令将删除指定日期以前的所有日志文件。

purge {master|binary} logs to 'log_name'
purge {master|binary} logs before 'date'

(8)使用二进制日志还原数据库
若mysql服务器启动了二进制日志,在数据库出现意外丢失数据的时候,可以使用mysqlbinlog工具从指定的时间点开始直到现在,或另指定一个时间点的日志中恢复数据。
要想从二进制日志恢复数据,需要直到当前二进制日志文件的路径和文件名。一般可以从配置文件my.ini或者my.cnf中找到路径。

mysqlbinlog [option] filename|mysql -u user -p password

(9)暂时停止二进制日志功能

set sql_log_bin={0|1}

当取值为0时,暂停记录二进制日志;当取值为1时,恢复记录二进制日志
3.错误日志
(1)启动和设置错误日志
在默认情况下如果没有在配置文件中指定文件名,则文件名默认为hostname.err,错误日志的启动和停止以及日志文件名都可以通过修改mysql的配置文件my.ini来配置。

[mysqld]
log-error=[path/[file_name]]

(2)查看错误日志
通过错误日志可以监视系统的运行状态,便于及时发现故障,修复故障。mysql错误日志是以文本文件形式存储,可以直接使用文本编辑器直接查看mysql错误日志

show variables like 'log_error';

(3)删除错误日志
由于错误日志是以文本文件的形式存在系统中的,可以直接删除。
在服务端可以按照下面的删除方式删除:
mysqladmin -u root -p password flush-logs
在客户端按照下面的方式删除:mysql>flush logs;
4.通用查询日志
通用查询日志记录mysql的所有用户操作,包括启动和关闭服务,执行查询和更新语句等
(1)启动和设置通用查询日志
mysql服务器默认情况下并没有开启通用查询日志,但是若需要通用查询日志,可以修改配置文件my.ini来启动

[mysqld]
log[=path/[filename]]

若不指定目录和文件名,通用查询日志将默认存储在mysql数据目录中的hostname.log文件中,hostname是mysql数据库的主机名。
5.慢查询日志
(1)慢查询日志是记录查询时长超过指定时间的日志,慢查询日志主要用来记录执行时间较长的查询语句。通过慢查询日志,可以找出执行时间较长,执行效率较低的语句,然后进行优化。

[mysqld]
log-slow-queries[=path/[filename]]
log_query_time=n

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值