MySQL日志管理

本文详细介绍了MySQL的四种日志:错误日志、二进制日志、通用查询日志和慢查询日志,以及它们的用途和开启、管理方法。二进制日志对于数据恢复和AB复制至关重要,而慢查询日志则用于查询优化。同时,文章还提供了配置日志和删除日志的操作步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、MySQL分为四种日志
存放位置一般放在数据目录下
1、错误日志:记录 MySQL数据库的启动、运行和关闭过程
/mysql/data/mysql.err    主机名.err
mysql> show variables like 'log_error';    查看错误日志存在的绝对路径
+---------------+-----------------------+
| Variable_name | Value                 |
+---------------+-----------------------+
| log_error     | /mysql/data/MySQl.err |
+---------------+-----------------------+
1 row in set (0.00 sec)
2、二进制日志(重要),开启二进制日志情况下,不能删除二进制日志,否则数据库可能起不来
记录用户对数据库所做的所有的DDL和DML的写操作,不会记录查询语句,对数据的容灾恢复有至关重要的作用。常用于AB复制和数据恢复。
DDL:create、drop、alter、truncate
DML:insert、update、delete
二进制日志的作用:做AB复制、恢复
3、通用查询日志:general_log        show variables like 'general_log';
mysql> show variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | OFF   |
+---------------+-------+
1 row in set (0.00 sec)
记录所有对数据库的请求信息(包括登录、查询),默认不开启
日志量较大、占用磁盘空间,一般不开启
4、慢查询日志:记录的是查询时间超过指定时间的查询语句,一般用于优化查询,默认不开启
二、开启各种日志,修改配置文件
临时开启,重启服务失效
mysql> show variables like 'general_log';查看通用日志状态
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | OFF   |
+---------------+-------+
1 row in set (0.00 sec)
mysql> set global general_log=on;临时开启通用查询日志
Query OK, 0 rows affected (0.10 sec)

mysql> show variables like 'general_log';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| general_log   | ON    |
+---------------+-------+
1 row in set (0.00 sec)
通用查询日志/var/lib/mysql/短主机名.log    cat /mysql/data/localhost.logmy
cat /car/lib/mysql/ULA.log
永久设置
# vim /etc/my.cnf
log=general_select_log    #=号右边的日志文件名可以自定义
重启服务之后生效

2、开启慢查询日志
            5.5以前的版本开启方法
            # vim /etc/my.cnf
            log-slow-queries=slow-log   #=号右边的日志文件名可自定义
            long_query_time=5             #设置慢查询超时时间  单位是:秒             超过规定查询时间会被系统界定为慢查询
            
            5.5及以后的版本开启方法
            # vim /etc/my.cnf
            slow_query_log_file= slowlog                定义慢查询的文件名
            long_query_time=5                               定义慢查询超时时间为5秒
            slow_query_log=on                               定义是否开启慢查询,on表示开启,1也表示开启。

            重启服务
            
            # mysql -u root -p2
            MariaDB [(none)]> select sleep(6);   #执行一个超过5秒的查询操作

            # cat /var/lib/mysql/slow-log 
    3、开启二进制日志
            # vim /etc/my.cnf
            在[mysqld]模块下面添加如下两行
            log-bin=log_bin.log                    #=号右边的日志文件名可自定义
            log-bin-index=log_bin.index    

            重启服务
            进入MySQL数据库之后可以使用如下命令查看是否已经开启二进制日志
            MariaDB [(none)]> show variables like 'log_bin';
     二进制日志的查看 mysqlbinlog
            # mysqlbinlog log_bin.000001 
            # at 4   #事件发生的位置信息
             #170606 14:51:00  #事件发生的时间信息
             
     使用二进制日志进行数据恢复      位置点和事件发生的时间可以混合使用
        使用位置点进行恢复
        # mysqlbinlog --start-position=245 --stop-position=534 log_bin.000001 |mysql -u root -p2
        --start-position   起始位置点
        --stop-position   结束位置点
        
        使用事件发生的时间
        # mysqlbinlog --start-datetime='17-06-06 15:25:04' --stop-datetime='17-06-06 15:26:15' log_bin.000002 | mysql -u root -p2
        --start-datetime  起始时间
        --stop-datetime  结束时间
查看日志信息
    MariaDB [(none)]> show master logs;
    +----------------+-----------+
    | Log_name       | File_size |
    +----------------+-----------+
    | log_bin.000001 |      1079 |
    | log_bin.000002 |      1523 |
    +----------------+-----------+
    2 rows in set (0.00 sec)

查看二进制日志里的操作记录
    MariaDB [(none)]> show binlog events in 'bin-log.000006';

查看当前使用的二进制日志文件及所处的位置
    MariaDB [(none)]> show master status\G

对日志的管理 
    删除日志  不要轻易删除,使用purge master logs进行删除二进制日志,不要使用rm -rf命令进行删除。
    1)删除某个日志文件之前的所有日志
        MariaDB [(none)]> purge master logs to 'log_bin.000002';
        Query OK, 0 rows affected (0.05 sec)
    
    2)删除多少天以前的日志文件
        MariaDB [(none)]> purge master logs before date_sub(current_date,interval 1 day);
    
    3)重置二进制日志(删除所有的二进制日志)
        MariaDB [(none)]> reset master;

    4)手动生成新的二进制日志文件
        MariaDB [(none)]> flush logs;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值