The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: MySQL - квотирование баз  под FreeBSD"
Отправлено auto_tips, 27-Окт-05 22:55 
Хитрости квотирования MySQL.

<p>Каждую базу MySQL хранит в отдельном каталоге внутри datadir.
MySQL работает под своим пользователем и соответственно создает файлы баз под им же. Соответственно квотирование в данном случае не возможно. Необходимо  заставить его создавать файлы баз, влaдельцем которых будет конкретный квотируемый  пользователь. Сделать это можно выставив бит SUID (4000) на каталог базы.

<p>Для начала:
<pre>

     в ядре:
        options SUIDDIR

     в /etc/fstab:
        добавляем в список опций suiddir
</pre>

<p>В MySQL создаем базу.  Находим каталог базы в datadir. По умолчанию он будет mysql:mysql.

<pre>

   Меняем владельца:
     chown sql-user databasedir
     теперь наш каталог sql-user:mysql
  
   Меняем права:  
       chmod 4070 databasedir
</pre>

<p>Такая настройка заставит систему создавать файлы от имени владельца каталога (sql-user) причем сам пользователь не будет иметь к нему доступа. К нему будет  иметь полный доступ MySQL (от группы mysql).
  
<p>Теперь мы можем использовать квоты как для обычных файлов.
При превышении квот MySQL будет генерить ошибку full disk что является нормальным явлением и корректно отрабатывается MySQL, хотя сопровождается некоторыми проблемами: при запросе на добавление в базу, превысившую квоты, запрос повисает, повисают также последующие запросы, которые можно снять только их убийством или освобождением  дополнительного места на диске. При дефолтных настройках это сразу вызовет проблему,  так как такие запросы займут все сетевые соединения. Поэтому необходимо ОБЯЗАТЕЛЬНО
ограничить максимальное количество подключений одного пользователя MySQL. В /etc/my.cnf:
<pre>

   max_connections  = 500 (всего коннектов)
   max_user_connections = 30 (максимум для одного пользователя)
</pre>

<p>Также возможно следующие - MySQL может пометить как поврежденные при останове сервера или  когда временные файлы займут слишком много места на диске (второе судя по мануалам, не проверял). Лечится репаиром соотвествующих таблиц.

<p>Убить повисшие процессы может только root базы если они достигли max_user_connections.

<p>Не работает с таблицами innodb, так последние хранятся в одном месте независимо от базы.

<p>Коментируйте.

URL:
Обсуждается: https://www.opennet.ru/tips/info/909.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру