2010-07-07 2 views
9

Есть ли команда, чтобы проверить, сколько осталось MySql?Check MySql Space

+1

df -h? (padding идет здесь) – shylent

+0

Я думаю, вам повезло бы с этим на ServerFault – Greg

+0

Спасибо всем за ответы, которые я не знал, может ли mysql ограничить объем данных, которые он может хранить. Если я буду следить за дисковым пространством сервера, я смогу иметь представление о том, сколько места осталось для базы данных. – MrB

ответ

5

Обычно MySQL не ограничивает пространство, которое он может использовать. Вы можете использовать все пространство, в котором находятся ваши жесткие диски.

Есть несколько исключений, хотя для действительно больших таблиц. Например, в MyISAM Storage Engine есть Max_Data_Length, который определяет, сколько данных может обрабатывать таблица (в зависимости от количества байтов, используемых для указателей) ... но по умолчанию 4Gb для таблицы не проблема, а из MySQL 5 таблица может магазин 256TB.

0

Confusing, Это будет зависеть от вашего места на жестком диске.

Если у вас есть место на вашем жестком диске, где вы были установлены сервер mysql, вы можете хранить миллионы записей ++.

+0

Вы знаете, как определить, сколько свободного места осталось на диске только через SQL-запросы? –

+0

Не уверен, возможно ли это – Paladin

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?
+0

Хотелось бы узнать, сколько места осталось на жестком диске. Я хочу, чтобы пользователь запустил программу, чтобы подумать дважды, перед запуском утилиты, которая будет эффективно увеличивать размер своей базы данных в четыре раза. Программа не находится на сервере базы данных, но подключается через ODBC. Я могу сделать это (более или менее) в Microsoft SQL с помощью XP_FIXEDDRIVES, но мне нужно поддерживать MSSQL и MYSQL, поэтому я ищу сопоставимую процедуру. –

7

@PeterTurner У меня есть ранее пост от 29 октября 2010 года о том, сколько пространства используется от MySQL

How to monitor MySQL space?

Однако я знаю, что это не то, что вы ищете. Вы не хотите, сколько дискового пространства MySQL использует. Ваш вопрос в том, сколько места осталось там, где пишет mysql. Это не операция MySQL. Тем не менее, вы можете воспользоваться MySQL для быстрого ответа на свой вопрос в сочетании с локальной ОС. В сочетании с чем? Команда df

The df отображает шесть колонок

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

, который расщепляет до

  • Filesystem
  • Размер
  • Используется
  • Свободна
  • Использование%
  • Установленный на

Вы должны получить столбец 4, Avail. Существует одна проблема с этой идеей: если имя файловой системы слишком длинное, это перемещает столбцы 2-6 на следующую строку.Ниже приведен пример:

[[email protected]******** ~]# 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 
[[email protected]******** ~]# 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. Вот скрипт, который будет эхо доступного пространства, где каталогу_данное в MySQL установлен:

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 дает выход в КБ
  • df -B 1K дает выход в КБ
  • df -B 1M дает выход в МБ

Единственное взаимодействие MySQL является получение datadir из MySQL.

Дайте ему попробовать !!!