检查磁盘使用情况
1. 查看MySQL数据目录大小
查看MySQL数据目录:
bash
sudo du -sh /var/lib/mysql
查看详细的目录结构大小:
bash
sudo du -h --max-depth=1 /var/lib/mysql
查看磁盘总体使用情况:
bash
df -h
2. 在MySQL内部查看数据库大小
查看所有数据库的大小:
sql
SELECT
table_schema AS 'Database',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)'
FROM information_schema.tables
GROUP BY table_schema
ORDER BY SUM(data_length + index_length) DESC;
查看具体表的大小:
sql
SELECT
table_name AS 'Table',
ROUND((data_length / 1024 / 1024), 2) AS 'Data Size (MB)',
ROUND((index_length / 1024 / 1024), 2) AS 'Index Size (MB)',
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'Total Size (MB)'
FROM information_schema.tables
WHERE table_schema = 'your_database_name'
ORDER BY (data_length + index_length) DESC;
查看二进制日志大小:
sql
SHOW BINARY LOGS;
使用监控脚本
创建监控脚本
内存监控脚本:
bash
#!/bin/bash
# mysql_memory_monitor.sh
echo "=== MySQL Memory Usage ==="
echo "System Memory:"
free -h
echo -e "\nMySQL Process Memory:"
ps aux | grep mysql | grep -v grep | awk '{print "PID: "$2", MEM: "$4"%, VSZ: "$5", RSS: "$6}'
echo -e "\nMySQL Buffer Pool Usage:"
mysql -u root -p -e "
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW STATUS LIKE 'Innodb_buffer_pool_pages%';
" 2>/dev/null
磁盘监控脚本:
bash
#!/bin/bash
# mysql_disk_monitor.sh
echo "=== MySQL Disk Usage ==="
echo "Data Directory Size:"
sudo du -sh /var/lib/mysql
echo -e "\nDisk Space:"
df -h /var/lib/mysql
echo -e "\nDatabase Sizes:"
mysql -u root -p -e "
SELECT
table_schema AS 'Database',
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)'
FROM information_schema.tables
GROUP BY table_schema
ORDER BY SUM(data_length + index_length) DESC;
" 2>/dev/null
使用专业监控工具
安装和使用mytop
bash
sudo apt install mytop
mytop -u root -p
使用MySQL Workbench
-
下载并安装MySQL Workbench
-
连接到MySQL服务器
-
使用性能仪表板查看详细指标
关键指标解读
内存相关:
-
innodb_buffer_pool_size: InnoDB缓冲池大小
-
key_buffer_size: MyISAM键缓冲大小
-
query_cache_size: 查询缓存大小
磁盘相关:
-
数据文件 :
/var/lib/mysql/ibdata1 -
日志文件 :
/var/lib/mysql/ib_logfile* -
二进制日志 :
/var/lib/mysql/binlog.*
定期清理(如果需要)
清理二进制日志:
sql
PURGE BINARY LOGS BEFORE NOW() - INTERVAL 7 DAY;
优化表:
sql
OPTIMIZE TABLE table_name;
这些方法可以帮助你全面了解MySQL在Ubuntu 24.04上的内存和磁盘使用情况。