检查MySql Space

时间:2010-07-07 05:28:42

标签: mysql

是否有命令检查MySql剩余多少空间?

4 个答案:

答案 0 :(得分:8)

@PeterTurner我在2010年10月29日发表了一篇关于MySQL使用了多少空间的帖子

How to monitor MySQL space?

然而,我知道这不是你想要的。您不希望MySQL使用多少磁盘空间。你的问题只是mysql写的空间有多少。这不是MySQL操作。不过,您可以利用MySQL快速回答本地操作系统的问题。结合什么?命令df

df显示六列

[root@******** ~]# df -h | head -1
Filesystem            Size  Used Avail Use% Mounted on

分解为

  • 文件系统
  • 尺寸
  • 二手
  • 只有
  • 使用%
  • 装在

您需要获得第4列Avail。这个想法存在一个问题:如果文件系统名称太长,则将列2-6移动到下一行。这是一个例子:

[root@******** ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/vg1-root 122236876   9196208 106731192   8% /
/dev/mapper/vg2-data01
                     1726991928 810877540 828388308  50% /data
/dev/sdc1            3844656172 559221048 3090137848  16% /backup
/dev/sda1               101086     17569     78298  19% /boot
tmpfs                 98976204         0  98976204   0% /dev/shm
none                  16777216     58576  16718640   1% /var/tmpfs
[root@i******** ~]# df -h /var/lib/mysql
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg2-data01
                      1.7T  774G  791G  50% /data

请注意,数据文件夹的文件系统名称会将第2-6列移到下一行。

因此,只需显示df显示的行数。如果有两行,则获取令牌#4。如果有三行,则获取令牌#3。这是shell脚本,它将回显安装mysql的datadir的可用空间:

MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
SQLSTMT="SHOW VARIABLES LIKE 'datadir'"
DATADIR=`mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" | awk '{print $2}'`
df -B 1 ${DATADIR} > /tmp/dfmysql.txt
LC=`wc -l < /tmp/dfmysql.txt`
if [ ${LC} -eq 2 ] ; then SPC=`tail -1 /tmp/dfmysql.txt | awk '{print $4}'` ; fi
if [ ${LC} -eq 3 ] ; then SPC=`tail -1 /tmp/dfmysql.txt | awk '{print $3}'` ; fi
echo ${SPC}

注意

的行
df -B 1 ${DATADIR} > /tmp/dfmysql.txt

这将以字节为单位提供df报告。你可以改变它:

  • df以KB格式提供输出
  • df -B 1K以KB格式提供输出
  • df -B 1M以MB为单位提供输出

唯一的mysql交互是从mysql中检索datadir

试一试!!!

答案 1 :(得分:6)

通常, MySQL不限制它可以使用的空间。您可以使用您的硬盘包含的所有空间。

但是,对于非常大的表格,有一些例外。例如MyISAM存储引擎,有一个Max_Data_Length,它决定一个表可以处理多少数据(取决于用于指针的字节数)......但默认情况下,每个表4Gb没有问题,而且从MySQL 5开始,一个表可以存储256TB。

答案 2 :(得分:1)

MySQL使用你的磁盘空间,所以当你的磁盘剩下空间时,MySQL也应该有空间。

在MySQL中,使用SHOW TABLE STATUS命令,查看每个表的Data_length列,以字节为单位。

另见:

  1. How to monitor MySQL space?
  2. How can you determine how much disk space a particular MySQL table is taking up?
  3. Mysql table size on the HDD
  4. How do I check how much disk space my database is using?

答案 3 :(得分:0)

令人困惑,这取决于您的硬盘空间。

如果您在安装了mysql服务器的硬盘中有空间,则可以存储数百万条++记录。