清理 MySQL 的 binlog
  TEZNKK3IfmPf 2023年11月14日 20 0

背景

k8s上部署一主两从mysql集群架构,使用动态持久卷各分配100G卷空间。MySQL版本使用8.0.26。binlog日志并没有做限制。

上线一段时间后,通过查看卷空间发现mysql binlog目录满了,数据库处于lock状态已无法正常响应了。

处理流程

最初登录进数据库,想通过purge命令清理不行,此时数据库已经hang住。通过mysql 命令清除日志不行,尝试通过系统命令先把几个binlog 日志mv 到/tmp目录下面。

mv /var/lib/mysql/mysql-0-bin.000078 /tmp

此时发现,系统已经释放出1G的空间。再次登录数据库执行purge命令清理。

手动清除binlog文件

# 登录mysql数据库
mysql -u root -p
# 查看当前bin log
show master logs;
# 每个mysql节点都要执行下
# 删除10天前的MySQL binlog日志
PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 10 DAY);
# 再次查看bin log
show master logs;

也可以重置master,删除所有binlog文件:

mysql -u root -p
# 谨慎操作
reset master;

配置自动清理

# 只保留7天内的 binlog 文件
mysql> set global binlog_expire_logs_seconds=60*60*168;

操作说明

  • 操作前最好备份数据库
  • 不推荐直接在/var/lib/mysql路径下,将binlog.0*删除掉,因为手动删除并不会更新binlog.index,而 binlog.index 的作用是加快查找 binlog 文件的速度。

参考文档

  • 清理 MySQL 的 binlog.md
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   25   0   0 mysql
  TEZNKK3IfmPf   2024年05月31日   26   0   0 sqlite数据库
  TEZNKK3IfmPf   2024年05月31日   31   0   0 数据库mysql
  TEZNKK3IfmPf   2024年05月31日   27   0   0 数据库mysql
TEZNKK3IfmPf