Страница 1 из 1

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

Добавлено: 2008-10-22 11:52:54
weec
наверняка все знают, на мой взгляд простой, метод проверки размера базы и ограничение пользователей на запись

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

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

Добавлено: 2008-10-22 12:10:54
zg
пхпмуадмин умеет размер считать, по крону можно скрипт накатать, который будет чекать и лишать пользователя привилегии вносить в базу записи. Или поставить лимит в самом мускуле.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 2009-01-13 22:21:50
Alex Keda
чё за квоты на папку?
я чё-то в UFS упустил чтоле?

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

Добавлено: 2009-01-13 22:43:06
zg
гм...

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

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 - не папки? -))))

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

Добавлено: 2009-01-13 23:00:52
Alex Keda
это точки монтирования.
по одной на юзера - поверь, это пеербор

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

serv# find . -type d | wc -l
     366
serv# pwd
/home2/mysql
serv#   
юзеров около сотни

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

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

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

Добавлено: 2009-01-24 13:48:11
Volodymyr
Не уверен что угадал с языком, но все же тут довольно понятно. (с) 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

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