zoukankan      html  css  js  c++  java
  • MySQL 历史 binlog 日志处理

    MySQL 历史 binlog 日志处理

    一、问题的引出

    MySQL binlog 如果不清理会占用服务器的空间,那么怎么处理binlog日志呢

    二、解决办法

    1、物理删除
    • df -Th 查看磁盘空间
    ➜ bob@bob-pc  ~   df -Th
    文件系统       类型      容量  已用  可用 已用% 挂载点
    udev           devtmpfs  7.8G     0  7.8G    0% /dev
    tmpfs          tmpfs     1.6G  2.4M  1.6G    1% /run
    /dev/sda1      ext4      110G  101G  3.6G   97% /
    tmpfs          tmpfs     7.8G  399M  7.4G    6% /dev/shm
    tmpfs          tmpfs     5.0M  4.0K  5.0M    1% /run/lock
    tmpfs          tmpfs     7.8G     0  7.8G    0% /sys/fs/cgroup
    /dev/sdb1      ext4      458G   35G  400G    8% /data/mnt
    tmpfs          tmpfs     1.6G   68K  1.6G    1% /run/user/1000
    
    
    • cat bin.index 文件看数据库binlog文件
    ➜ bob@bob-pc  /data/mnt/mysql_data  sudo cat bin.index
    ./bin.000112
    ./bin.000113
    ./bin.000114
    ./bin.000115
    ./bin.000116
    
    • rm -rf bin.000112 bin.000113 删除开始的数据

      rm -rf  bin.000112  bin.000113 
      
    • vim bin.index 编辑bin.index 文件 ,删除掉刚刚删掉的binlog,不然下次mysql 重启会起不来

    2、逻辑删除
    (root@localhost:mysql3306.sock)[(none)]> show binary logs;
    +------------+-----------+
    | Log_name   | File_size |
    +------------+-----------+
    | bin.000112 |         0 |
    | bin.000113 |         0 |
    | bin.000114 |       217 |
    | bin.000115 |       194 |
    | bin.000116 |       194 |
    +------------+-----------+
    5 rows in set (0.00 sec)
    
    (root@localhost:mysql3306.sock)[(none)]> show variables like '%expire_logs_days%';
    +------------------+-------+
    | Variable_name    | Value |
    +------------------+-------+
    | expire_logs_days | 7     |
    +------------------+-------+
    1 row in set (0.00 sec)
    
    (root@localhost:mysql3306.sock)[(none)]> set global expire_logs_days = 4; 
    Query OK, 0 rows affected (0.00 sec)
    
    

    这里修改/etc/my.cnf 重启mysql

    3、手动清除binlog文件
    登录机器 执行 删除3天前的MySQL binlog日志
    (root@localhost:mysql3306.sock)[(none)]> PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 3 DAY);
    Query OK, 0 rows affected (0.01 sec)
    
    (root@localhost:mysql3306.sock)[(none)]> show master logs ;
    +------------+-----------+
    | Log_name   | File_size |
    +------------+-----------+
    | bin.000112 |         0 |
    | bin.000113 |         0 |
    | bin.000114 |       217 |
    | bin.000115 |       194 |
    | bin.000116 |       194 |
    +------------+-----------+
    
    删除mysql-bin.000114 之前的binlog  这里是个开区间(-无穷,bin.000114)
    (root@localhost:mysql3306.sock)[(none)]> PURGE MASTER LOGS to 'bin.000114';
    Query OK, 0 rows affected, 2 warnings (0.11 sec)
    
    清除了运行,一下命令显示已经删除了
    (root@localhost:mysql3306.sock)[(none)]> show master logs;
    +------------+-----------+
    | Log_name   | File_size |
    +------------+-----------+
    | bin.000114 |       217 |
    | bin.000115 |       194 |
    | bin.000116 |       194 |
    +------------+-----------+
    3 rows in set (0.00 sec)
    

    参考
    https://www.cnblogs.com/Camiluo/p/11820013.html#4464660

  • 相关阅读:
    代码规范总结
    git记住提交密码的技巧
    php foreach遍历
    flight学习笔记
    the resource is not on the build path of a php project
    Google安装postman插件
    PHP开发框架CodeIgniter
    eclipse中php项目开发的环境配置说明
    MyBatis入门篇
    mybatis学习(十二)——mybatis逆向工程
  • 原文地址:https://www.cnblogs.com/securitybob/p/13219099.html
Copyright © 2011-2022 走看看