предупреждение размера базы

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
weec
лейтенант
Сообщения: 948
Зарегистрирован: 2007-07-24 11:17:35
Откуда: Afghanistan
Контактная информация:

предупреждение размера базы

Непрочитанное сообщение weec » 2008-10-22 11:52:54

наверняка все знают, на мой взгляд простой, метод проверки размера базы и ограничение пользователей на запись

хотелось бы услышать что либо совершенное

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: предупреждение размера базы

Непрочитанное сообщение zg » 2008-10-22 12:10:54

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

generik
ефрейтор
Сообщения: 62
Зарегистрирован: 2008-08-08 10:29:43

Re: предупреждение размера базы

Непрочитанное сообщение generik » 2009-01-13 14:15:14

zg писал(а):пхпмуадмин умеет размер считать, по крону можно скрипт накатать, который будет чекать и лишать пользователя привилегии вносить в базу записи. Или поставить лимит в самом мускуле.
В MySQL есть возможность ограничивать рамер конкретной базы?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: предупреждение размера базы

Непрочитанное сообщение zg » 2009-01-13 14:57:45

generik писал(а):В MySQL есть возможность ограничивать рамер конкретной базы?
насколько мне известно, нет. В мануале ничего про размер не сказано http://dev.mysql.com/doc/refman/5.1/en/grant.html. Обычно это делается через квоты файловой системы.

generik
ефрейтор
Сообщения: 62
Зарегистрирован: 2008-08-08 10:29:43

Re: предупреждение размера базы

Непрочитанное сообщение generik » 2009-01-13 15:12:03

zg писал(а):
generik писал(а):В MySQL есть возможность ограничивать рамер конкретной базы?
насколько мне известно, нет. В мануале ничего про размер не сказано http://dev.mysql.com/doc/refman/5.1/en/grant.html. Обычно это делается через квоты файловой системы.
Да, через квоты я знаю. Но если допустим условие таково что у пользователя есть 5 баз и нужно каждую ограничить в определенный размер. Через системные квоты получится только на все базы общий обьем ограничить.

В принципе я решил попробовать наваять или найти скрипт который будет чекать обьем базы и в случае превишения указанного лимита снимать права на INSERT с базы.

Поскольку программер с меня никакой буду кумекать =) Насколько я понял что бы допустим на баше такое ваять нужно использовать циклы?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: предупреждение размера базы

Непрочитанное сообщение zg » 2009-01-13 15:18:04

generik писал(а):Да, через квоты я знаю. Но если допустим условие таково что у пользователя есть 5 баз и нужно каждую ограничить в определенный размер. Через системные квоты получится только на все базы общий обьем ограничить.
а что мешает задать квоту на папку с конкретной базой?
generik писал(а):В принципе я решил попробовать наваять или найти скрипт который будет чекать обьем базы и в случае превишения указанного лимита снимать права на INSERT с базы.
самое простое и эффективное решение -)))
generik писал(а):Поскольку программер с меня никакой буду кумекать =) Насколько я понял что бы допустим на баше такое ваять нужно использовать циклы?
на баше ваять нежелательно, лучше на шелле, а так смотря чего будет хотеться от скрипта. Если скрипт сложный, то лучше на пхп ваять (или чего знаешь), если не очень, то на sh.

generik
ефрейтор
Сообщения: 62
Зарегистрирован: 2008-08-08 10:29:43

Re: предупреждение размера базы

Непрочитанное сообщение generik » 2009-01-13 15:25:38

zg писал(а):
generik писал(а):Да, через квоты я знаю. Но если допустим условие таково что у пользователя есть 5 баз и нужно каждую ограничить в определенный размер. Через системные квоты получится только на все базы общий обьем ограничить.
а что мешает задать квоту на папку с конкретной базой?

У меня в системе есть юзер user1 у него есть 5 баз db1 db2 db3 db4 db5 мне нужно что бы на все его базы был лими по 50 Мб на каждую. Через системные квоты будет нереально.
generik писал(а):В принципе я решил попробовать наваять или найти скрипт который будет чекать обьем базы и в случае превишения указанного лимита снимать права на INSERT с базы.
самое простое и эффективное решение -)))

Я так же надеюсь что способ будет нормальный
generik писал(а):Поскольку программер с меня никакой буду кумекать =) Насколько я понял что бы допустим на баше такое ваять нужно использовать циклы?
на баше ваять нежелательно, лучше на шелле, а так смотря чего будет хотеться от скрипта. Если скрипт сложный, то лучше на пхп ваять (или чего знаешь), если не очень, то на sh.
Чего я знаю? =) я только вот начал изучать sh =)) так что до php и других языков мне еще как до неба

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35428
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: предупреждение размера базы

Непрочитанное сообщение Alex Keda » 2009-01-13 22:21:50

чё за квоты на папку?
я чё-то в UFS упустил чтоле?
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: предупреждение размера базы

Непрочитанное сообщение zg » 2009-01-13 22:43:06

гм...

Код: Выделить всё

zg# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ad4s1a    496M    145M    311M    32%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ad4s1d    4.8G    555M    3.9G    12%    /root
/dev/ad4s1h    496M    432M     24M    95%    /tmp
/dev/ad4s1e     24G     15G    7.2G    68%    /usr
/dev/ad4s1f     24G    3.1G     19G    14%    /usr/ports
/dev/ad4s1g    496M    265M    191M    58%    /var
/dev/ad6s1c    144G     20G    113G    15%    /backup
zg#
Mounted on - не папки? -))))

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35428
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: предупреждение размера базы

Непрочитанное сообщение Alex Keda » 2009-01-13 23:00:52

это точки монтирования.
по одной на юзера - поверь, это пеербор

Код: Выделить всё

serv# find . -type d | wc -l
     366
serv# pwd
/home2/mysql
serv#   
юзеров около сотни
Убей их всех! Бог потом рассортирует...

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: предупреждение размера базы

Непрочитанное сообщение zg » 2009-01-14 7:28:25

lissyara писал(а):по одной на юзера - поверь, это пеербор
гм.. чёт я не подумал, муся же пашет от одного юзверя, так что квоты на диск тут не подойдут -))) значит остаётся скрипт

Аватара пользователя
Volodymyr
лейтенант
Сообщения: 614
Зарегистрирован: 2008-06-17 16:04:56
Откуда: Ukraine, Lviv
Контактная информация:

Re: предупреждение размера базы

Непрочитанное сообщение Volodymyr » 2009-01-24 13:48:11

Не уверен что угадал с языком, но все же тут довольно понятно. (с) Bahadir Malkoc

Код: Выделить всё

<?php
mysql_connect("localhost","root","");
$result = mysql_query("SHOW TABLE STATUS FROM test;");
while($array = mysql_fetch_array($result)) {
	$total = $array[Data_length]+$array[Index_length];
	echo '
		Table: '.$array[Name].'<br />
		Data Size: '.$array[Data_length].'<br />
		Index Size: '.$array[Index_length].'<br />
		Total Size: '.$total.'<br />
	Total Rows: '.$array[Rows].'<br />
	Average Size Per Row: '.$array[Avg_row_length].'<br /><br />
	';
}
?>
Ну или по простому. $total = размер таблицы. Сумма размеров таблиц = размер БД. Если размер БД привысит твой лимит меняешь права пользователя запрещая Инсертить, апдейтить и реплейсить. Если Размер БД станет меньше - опять разрешаеш это делать, ну и желательно письмо какое-то пользователю накатать с тем что произошло. Если не разберешься что и как я и так буду писать панельку для управление квотами БД, могу поделится (PHP).

Все что надо знать.

SHOW TABLE STATUS Syntax
GRANT Syntax

Не лишним может оказаться проверка и оптимизация БД перед определение ее размера.