微信扫一扫 分享朋友圈

已有 186 人浏览分享

开启左侧

MySQL日志如何清理

[复制链接]
186 0
1.错误日志
    错误日志对 mysql的启动、运行、关闭过程进行了记录,
    MySQL DBA 在遇到问题时候,第一时间应该查看这个错误日志文件,
    该文件不但记录了出错信息,还记录了一些警告信息以及正确信息,
    这个 error 日志文件类似于 oracle 的 alert 文件。
    可以通过“show variables like ‘log_error’;”命令查看错误日志的路径
image.png

1.1 配置方法
    默认是启动的,一般以err做后缀名,需要在参数文件中配置
    先找到参数文件
    log_error = /usr/local/mysql/data/error.err

    1.2 错误日志清理
    [root@jeames data]# mv log.err log-old.err
    mysql> FLUSH LOGS;
    服务器将关闭并重新打开日志文件
    C:\Users\wangd>mysqladmin -uroot -p -P3308 flush-logs

    2.慢查询日志
    当查询超过一定时间没有返回结果的时候,才会记录进慢查询日志。
    • 慢查询日志可以帮助 DBA 找出执行效率缓慢的 SQ语句,为数据库优化工作提供帮助。
    • 慢查询日志默认是不开启的,建议开启慢查询日志。
    • 当需要进行采样分析时手工开启。

    2.1 功能
    MySQL的慢查询日志是 MySQL 提供的一种日志记录,
    它用来记录在 MySQL 中响应时间超过阀值的语句,
    具体指 运行时间超过 long_query_time 的值的 SQL ,则会被记录到慢查询日志中。
    mysql> show variables like ‘%long_query_time%’;
    long_query_time 的默认值为 10,意思是运行 10S 以上的语句。
    默认情况下,Mysql 数据库并不启动慢查询日志,
    需要我们手动来设置这个参数,
    当然,如果不是调优需要的话,一般不建议启动该参数,
    因为开启慢查询日志会或多或少带来一定的性能影响。
    慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。

    2.2 慢查询日志开启
    关于慢查询日志,主要涉及到下面几个参数:
    slow_query_log :是否开启慢查询日志功能(必填)
    slow_query_log_file:慢查询日志文件及位置
    long_query_time :超过设定值,将被视作慢查询,并记录至慢查询日志文件中(必填)
    也就是说,只有满足以上三个条件,“慢查询功能”才可能正确开启。
    mysql> show variables like ‘%slow_%’;
    mysql> set global slow_query_log=1;
    mysql> show variables like ‘%slow_%’;
    show variables like ‘%slow_query_log_file%’;
    参数文件修改如下:
    修改配置文件my.cnf,在[mysqld]下的下方加入
    [mysqld]
    slow_query_log = ON
    slow_query_log_file = /usr/local/mysql/data/slow.log
    long_query_time = 1
    重启MySQL服务service mysqld restart即可

    2.3 清除慢查询日志
    select * from performance_schema.global_variables where variable_name in
    (‘slow_query_log’,‘log_output’,‘slow_query_log_file’,‘long_query_time’)
    SET GLOBAL slow_query_log = ‘OFF’;
    mysql> flush slow logs;

    2.4 慢查询写到表里
    – log_output 默认是FILE,表示慢查询日志输入至日志文件,可以通过set修改输出为TABLE
    mysql> show variables like ‘%log_output%’;
    #默认是FILE,表示慢查询日志输入至日志文件,可以通过set修改输出为TABLE
    mysql> set global log_output = ‘FILE’;
    mysql> set global log_output = ‘TABLE’;
    无法直接删除,如果直接删除的话,
    会出现“ERROR 1556 (HY000): You can’t use locks with log tables.”的错误提示
    SET GLOBAL slow_query_log = ‘OFF’;
    RENAME TABLE slow_log TO slow_log_temp;
    DELETE FROM slow_log_temp WHERE start_time < DATE(NOW());
    RENAME TABLE slow_log_temp TO slow_log;
    SET GLOBAL slow_query_log = ‘ON’;

    3.全查询日志
    全查询日志记录了所有对数据库请求的信息,
    正确的 SQL才会被记录下来(错误写法的 SQL 语句不会记录),
    包括 show、查询 select 语句、权限不足的语句(ERROR 1044 (42000): Access denied for user)。默认位置在变量 datadir 下,默认文件名为:主机名.log。
    MySQL 的通用查询日志默认情况下是不开启的,当需要进行采样分析时手工开启
    mysql> show variables like ‘general_log’;
    mysql> show variables like ‘%general_log_file%’;
image.png


3.1 日志开启
    mysql> SET GLOBAL general_log=1;
    mysql> show variables like ‘general_log’;
    默认名称为:变量 datadir 下:主机名.log
    查询日志记录查询语句与启动时间,建议不是在调试环境下不要开启查询日志,
    因为会不断占据你的磁盘空间,并会产生大量的 IO。

    3.2 日志清理
    ##log清理
    SET GLOBAL general_log = ‘OFF’;
    [root@jeames data]# mv jeames.log jeames_old.log
    mysql> flush general logs;

    ##如果你的日志是写到表里的,则通过以下方法
    SET GLOBAL general_log = ‘OFF’;
    RENAME TABLE general_log TO general_log_temp;
    DELETE FROM general_log_temp WHERE event_time < DATE(NOW());
    RENAME TABLE general_log_temp TO general_log;
    SET GLOBAL general_log = ‘ON’;

     4.二进制日志
    Binlog是MySQL中一个很重要的日志,记录了对数据库进行变更的操作,
    但是不包括 select操作以及 show 操作,因为这类操作对数据库本身没有没有修改。
    如果想记录 select和 show 的话,那就需要开启全查询日志。
    另外 binlog 还包括了执行数据库更改操作时间和执行时间等信息。
    binlog 是 MySQL Server 层记录的二进制日志文件,逻辑层面

    4.1 二进制日志配置
    注:若想开启二进制日志,则必须加上 server_id 参数,如下
    [mysqld]
    log-bin
    server_id=80233306

     4.2 作用
    (1)恢复 recovery 。某些数据的恢复需要二进制日志,在全库文件恢复后,
    可以在此基础上通过二进制日志进行 point-to-time 的恢复(mysqldump 全量恢复+binlog增量恢复)。
    (2)复制(replication)。其原理和恢复类似,
    通过复制和执行二进制日志使得一台远程的 mysql数据库(slave)于一台 mysql 数据库(master)进行实时同步。

    4.3 清理二进制日志
    mysql> show variables like ‘%binlog_expire_logs_seconds%’ ;
    mysql 8开始 expire_logs_days废弃
    启用binlog_expire_logs_seconds设置binlog自动清除日志时间
    保存时间 以秒为单位;默认2592000 30天
    14400 4小时;86400 1天;259200 3天
    ##自动删除
    mysql> set global binlog_expire_logs_seconds=86400;
    mysql> set global binlog_expire_logs_seconds=2592000;
    ##手动删除
    默认日志文件达到 1G 都会重新生成一个新的二进制日志文件
    mysql> select @@max_binlog_size;
    #binlog.000025 之前的日志都会被删除
    mysql> PURGE BINARY LOGS TO ‘binlog.000025’;
    #时间’2020-04-28 23:59:59’之前的日志都会被删除
    mysql> PURGE BINARY LOGS BEFORE ‘2020-04-28 23:59:59’;
    #清空历史二进制日志,从 000001 开始重新
    mysql> RESET MASTER;
    mysql> select @@binlog_format ;




免责声明:
1,海欣资源网所发布的资源由网友上传和分享,不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
2,海欣资源网的资源来源于网友分享,仅限用于学习交流和测试研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
3,海欣资源网所发布的资源由网友上传和分享,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。
4,如果您喜欢,请支持正版,购买正版,得到更好的正版服务,如有侵权,请联系我们删除并予以真诚的道歉,联系方式邮箱 haixinst@qq.com
海欣资源-企业信息化分享平台。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

0

粉丝

10

主题
热度排行
回复排行
最新贴子

Archiver|手机版|海欣资源 ( 湘ICP备2021008090号-1 )|网站地图

GMT+8, 2023-2-1 17:32 , Gzip On, Redis On.

免责声明:本站所发布的资源和文章均来自网络,仅限用于学习交流和测试研究目的,不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 如果您喜欢,请支持正版,购买正版,得到更好的正版服务,如有侵权,请联系我们删除并予以真诚的道歉。