Linux-显示磁盘占用情况

Linux df命令用于显示目前在Linux系统上的文件系统的磁盘使用情况统计。

语法

df [选项]... [FILE]...
  • 文件-a, --all 包含所有的具有 0 Blocks 的文件系统
  • 文件--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
  • 文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
  • 文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
  • 文件-i, --inodes 列出 inode 资讯,不列出已使用 block
  • 文件-k, --kilobytes 就像是 --block-size=1024
  • 文件-l, --local 限制列出的文件结构
  • 文件-m, --megabytes 就像 --block-size=1048576
  • 文件--no-sync 取得资讯前不 sync (预设值)
  • 文件-P, --portability 使用 POSIX 输出格式
  • 文件--sync 在取得资讯前 sync
  • 文件-t, --type=TYPE 限制列出文件系统的 TYPE
  • 文件-T, --print-type 显示文件系统的形式
  • 文件-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
  • 文件-v (忽略)
  • 文件--help 显示这个帮手并且离开
  • 文件--version 输出版本资讯并且离开
<think> 我们需要查询Linux系统中MySQL数据库的磁盘占用情况。可以通过以下几种方法: 1. 使用Linux系统命令查看MySQL数据目录的大小 2. 通过MySQL内部查询数据文件大小 3. 查看二进制日志和慢查询日志等日志文件的大小 下面我们分别给出解决方案: </think> 在Linux系统中查询MySQL磁盘占用情况,可以通过分析MySQL数据目录、日志文件和系统磁盘工具实现。以下是详细解决方案: ### 方法1:直接查看MySQL数据目录大小(推荐) ```bash # 查看MySQL数据目录总大小(默认位置) du -sh /var/lib/mysql # 查看各数据库占用明细 sudo du -h --max-depth=1 /var/lib/mysql | sort -hr ``` **命令解释**: - `du -sh`:统计目录总大小(-s汇总,-h人类可读格式) - MySQL默认数据目录:`/var/lib/mysql`(可通过`SHOW VARIABLES LIKE 'datadir';`确认) - `--max-depth=1`:只显示一级子目录(即各数据库) - `sort -hr`:按人类可读数值大小逆序排序 ### 方法2:通过MySQL内部查询(精确到表) ```sql -- 查看所有数据库大小(MB) SELECT table_schema AS `Database`, ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) `Size (MB)` FROM information_schema.TABLES GROUP BY table_schema ORDER BY `Size (MB)` DESC; -- 查看特定数据库表级明细 SELECT table_name AS `Table`, ROUND(((data_length + index_length) / 1024 / 1024), 2) `Size (MB)` FROM information_schema.TABLES WHERE table_schema = "your_database" ORDER BY `Size (MB)` DESC; ``` **代码解释**: - `data_length`:表数据大小 - `index_length`:索引大小 - `information_schema.TABLES`:MySQL元数据表 - 替换`your_database`为实际数据库名 ### 方法3:分析日志文件占用 ```bash # 查看二进制日志(Binlog)大小 sudo du -h /var/lib/mysql/mysql-bin.* # 查看错误日志/慢查询日志(配置文件位置) grep 'log-error' /etc/mysql/my.cnf sudo du -h /var/log/mysql/error.log ``` ### 方法4:使用磁盘分析工具 ```bash # 安装ncdu工具(若未安装) sudo apt install ncdu # Debian/Ubuntu sudo yum install ncdu # CentOS/RHEL # 扫描MySQL目录 sudo ncdu /var/lib/mysql ``` **交互操作**: - 方向键导航,Enter进入目录 - `d`删除文件(慎用) - `g`切换百分比/大小显示 ### 完整监控脚本 ```bash #!/bin/bash # 获取数据目录 DATADIR=$(mysql -Nse "SHOW VARIABLES LIKE 'datadir'" | awk '{print $2}') echo "==== MySQL磁盘占用报告 ====" echo "数据目录: $DATADIR" echo "--------------------------" # 总大小 echo -n "总占用: " du -sh $DATADIR | cut -f1 # 数据库大小排名 echo -e "\n数据库大小排名:" mysql -e "SELECT \ table_schema AS 'Database', \ ROUND(SUM(data_length+index_length)/1048576, 2) 'Size (MB)' \ FROM information_schema.TABLES \ GROUP BY table_schema \ ORDER BY SUM(data_length+index_length) DESC" | column -t # 日志文件分析 echo -e "\n日志文件占用:" sudo du -h $DATADIR/mysql-bin.* 2>/dev/null sudo du -h /var/log/mysql/*.log 2>/dev/null ``` ### 输出示例 ```text ==== MySQL磁盘占用报告 ==== 数据目录: /var/lib/mysql --------------------------占用: 3.2G 数据库大小排名: Database Size (MB) ecommerce 1540.25 wordpress 982.71 test_db 120.34 mysql 85.12 日志文件占用: 1.2G /var/lib/mysql/mysql-bin.000351 800M /var/log/mysql/mysql-slow.log ``` ### 注意事项 1. **权限问题**:使用`sudo`访问系统级目录 2. **InnoDB文件**:核心数据在`ibdata1`和`ib_logfile*` 3. **临时文件**:检查`tmpdir`位置(通常为`/tmp`) 4. **配置文件路径**:`/etc/mysql/my.cnf`或`/etc/my.cnf`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值