网站首页 > 技术教程 正文
背景
最近遇到了一个坑,MySQL数据库服务器硬盘容量告警,而且因为非技术原因,还不能追加硬盘。
通过监控发现,磁盘IO一直100%。直接影响就是系统处理时间越来越长,接口响应耗时也越来越多。
drop or truncate table 失败
经过分析,发现mysql业务数据库里有好几张大表,而且这几张大表行数都在5000万以上,文件大小都在100G和150G之间。
因为这些表都是备份表,第一反应就是找DBA直接清理掉这些表。潜意识里以为drop table 和 truncate table效率很高,都会快速完成,但事实上不是。但意外的是,在执行drop table时,直接导致数据库挂起了,而且还发生了主从切换。
第一次尝试失败。
通过Linux硬链接删除
第一次失败反应出来的问题是,如果数据文件过大,drop table操作也得慎用。
那我们可以在drop table之前,想办法把数据文件逻辑清空。比如Linux硬连接的方式,具体步骤如下(假如目标表名是test):
- 进入数据库data目录,创建数据文件 test.ibd的硬链接
ln test.ibd test.ibd.hdlk
- 进入数据库命令行删除目标表。
drop table test;
此时,磁盘上真实的数据其实没删除,但数据库里的表,已经删除了。
- 再回到数据库data目录清除数据文件。
rm test.ibd.hdlk
到此,数据就能快速清理成功了。
猜你喜欢
- 2025-05-14 MySQL系列-源码编译安装(v8.0.25)
- 2025-05-14 测试人员如何在linux服务器中查询mysql日志?
- 2025-05-14 linux环境用mysqldump定时备份Mysql数据
- 2025-05-14 MySQL数据库简介及C#中的操作应用实例
- 2025-05-14 oracle和mysql的优缺点对比
- 2025-05-14 MySQL合集-性能工具
- 2025-05-14 Linux CentOS 安装 MySQL 8
- 2025-05-14 MySql安装与使用
- 2025-05-14 忘记mysql的root密码
- 2025-05-14 MySQL合集-单机容器化
你 发表评论:
欢迎- 最近发表
-
- linux日志文件的管理、备份及日志服务器的搭建
- Linux下挂载windows的共享目录操作方法
- Linux系统中的备份文件命令(linux系统中的备份文件命令有哪些)
- 麒麟KYLINOS|通过不同方法设置用户访问文件及目录权限
- 「Linux笔记」系统目录结构(linux目录的结构及含义)
- linux中修改归属权chown命令和chgrp命令
- 工作日报 2021.10.27 Android-SEAndroid权限问题指南
- Windows和Linux环境下,修改Ollama的模型默认保存路径
- 如何强制用户在 Linux 上下次登录时更改密码?
- 如何删除Linux文件夹中除某些扩展名之外的所有文件?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)