翼度科技»论坛 编程开发 mysql 查看内容

MySQL安全删除binlog日志的详细步骤

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
1. 查看主库和从库正在使用的binlog是哪个文件
  1. show master status # 主库
  2. show slave status # 分库
复制代码


2. 查看二进制日志
  1. show binary logs;

  2. show master logs;

  3. show slave logs;
复制代码


3. 查询binlog日志


  • 查询第一个binlog日志
  1. show binlog events;
复制代码

  • 查询指定binlog日志
  1. show binlog events in 'mysql-bin.000001'
复制代码


4. 安全清理binlog日志

可以直接删除 binlog 文件,但是可以通过 mysql 提供的工具来删除更安全,因为purge 会更新 mysql-bin.index中的条目,而直接删除的话,mysql-bin.index文件不会更新。mysql-bin.index的作用是加快查找binlog文件的速度。
  1. purge binary logs to 'mysql-bin.012391'; #删除 'mysql-bin.012390'前日志,保留 'mysql-bin.012390'
  2. PURGE binary LOGS BEFORE '2023-08-13 03:00:00';  #清除2023-08-13 03:00:00前binlog日志  
  3. PURGE binary LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);  #清除3天前binlog日志  
复制代码

  • 清理前

  • 清理中
    1. 使用:PURGE binary LOGS BEFORE DATE_SUB( NOW( ), INTERVAL 3 DAY);
    复制代码

  • 清理后

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


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

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

5.1 永久生效

在my.cnf中配置"expire_logs_days"参数
  1. -- 1. CentOS默认位置/etc/my.cnf
  2. [root@localhost log]# vim /etc/my.cnf

  3. -- 2. 在[mysqld]下配置

  4. -- 3. 自动清理15天前的binlog,默认值为0,表示从不删除。
  5. expire_logs_days = 15

  6. -- 4. 配置后需要重启MySQL数据库
复制代码
5.2 临时生效

进入MySQL,用以下命令设置全局的参数:set global expire_logs_days = 15;
清除binlog对从mysql的影响
如果您有一个活性的从属服务器,该服务器当前正在读取您正在试图删除的日志之一,则本语句不会起作用,而是会失败,并伴随一个错误。
不过,如果从属服务器是休止的,并且您碰巧清理了其想要读取的日志之一,则从属服务器启动后不能复制。

总结

到此这篇关于MySQL安全删除binlog日志的文章就介绍到这了,更多相关MySQL安全删除binlog日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:https://www.jb51.net/database/3158970kj.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具