相关推荐recommended
MySQL安全删除binlog日志
作者:mmseoamin日期:2024-01-18

MySQL安全删除binlog日志


文章目录

  • MySQL安全删除binlog日志
  • 1. 查看主库和从库正在使用的binlog是哪个文件
  • 2. 查看二进制日志
  • 3. 查询binlog日志
  • 4. 安全清理binlog日志
  • 5. 设置自动清理MySQL binlog日志
    • 5.1 永久生效
    • 5.2 临时生效

      1. 查看主库和从库正在使用的binlog是哪个文件

      show master status # 主库
      show slave status # 分库
      

      MySQL安全删除binlog日志,在这里插入图片描述,第1张

      2. 查看二进制日志

      show binary logs;
      或
      show master logs;
      或
      show slave logs;
      

      MySQL安全删除binlog日志,在这里插入图片描述,第2张

      3. 查询binlog日志

      • 查询第一个binlog日志
        show binlog events;
        
        • 查询指定binlog日志
          show binlog events in 'mysql-bin.000001'
          

          MySQL安全删除binlog日志,在这里插入图片描述,第3张

          4. 安全清理binlog日志

          可以直接删除 binlog 文件,但是可以通过 mysql 提供的工具来删除更安全,因为purge 会更新 mysql-bin.index中的条目,而直接删除的话,mysql-bin.index文件不会更新。mysql-bin.index的作用是加快查找binlog文件的速度。

          purge binary logs to 'mysql-bin.012391'; #删除 'mysql-bin.012390'前日志,保留 'mysql-bin.012390'
          PURGE binary LOGS BEFORE '2023-08-13 03:00:00';  #清除2023-08-13 03:00:00前binlog日志  
          PURGE binary LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);  #清除3天前binlog日志  
          
          • 清理前

            MySQL安全删除binlog日志,在这里插入图片描述,第4张

          • 清理中

            使用:PURGE binary LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);

            MySQL安全删除binlog日志,在这里插入图片描述,第5张

          • 清理后

            MySQL安全删除binlog日志,在这里插入图片描述,第6张

          • 执行“reset master;”命令,该命令将删除所有二进制日志,新日志的编号从“000001”开始,命令如下

            reset master;
            

            MySQL安全删除binlog日志,在这里插入图片描述,第7张

            5. 设置自动清理MySQL binlog日志

            若想一劳永逸可以配置自动清理,需要在MySQL配置文件my.cnf中配置

            5.1 永久生效

            在my.cnf中配置"expire_logs_days"参数

            -- 1. CentOS默认位置/etc/my.cnf 
            [root@localhost log]# vim /etc/my.cnf 
            -- 2. 在[mysqld]下配置
            -- 3. 自动清理15天前的binlog,默认值为0,表示从不删除。 
            expire_logs_days = 15
            -- 4. 配置后需要重启MySQL数据库
            

            5.2 临时生效

            进入MySQL,用以下命令设置全局的参数:set global expire_logs_days = 15;