检查MySql Space

MrB*_*MrB 12 mysql

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

Rol*_*DBA 9

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

如何监控MySQL空间?

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

df显示六列

[root@******** ~]# df -h | head -1
Filesystem            Size  Used Avail Use% Mounted on
Run Code Online (Sandbox Code Playgroud)

那打破了

  • 文件系统
  • 尺寸
  • 用过的
  • 使用%
  • 镶嵌在

你需要得到第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
Run Code Online (Sandbox Code Playgroud)

请注意,数据文件夹的文件系统名称将列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}
Run Code Online (Sandbox Code Playgroud)

注意有的行

df -B 1 ${DATADIR} > /tmp/dfmysql.txt
Run Code Online (Sandbox Code Playgroud)

这将以df字节为单位给出报告.你可以改变它:

  • df 以KB为单位给出输出
  • df -B 1K 以KB为单位给出输出
  • df -B 1M 以MB为单位给出输出

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

试试看 !!!


Kon*_*rak 6

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

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


Som*_*luk 5

MySQL 使用您的磁盘空间,因此当您的磁盘有剩余空间时,MySQL 也应该有空间。

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

也可以看看 :

  1. 如何监控MySQL空间?
  2. 如何确定特定 MySQL 表占用了多少磁盘空间?
  3. HDD 上的 MySQL 表大小
  4. 如何检查我的数据库使用了多少磁盘空间?