Записки сисадмина

Или помойное ведро идей


Выделенные сервера от $130
VDS/VPS от $20

Уменьшение потребления памяти MySQL

В основном это касается Virtual Dedicated Server (VDS/VPS), т.к. дефолтная установка MySQL на CeontOS/Fedora/RHEL с дефолтным my.cnf делает malloc на сотню с лишним мегабайт.

Конечно на потребляемую память MySQL влияют такие параметры как key_buffer, query_cache_size и т.п. Но они по дефолту идут минимальные, а кеш запросов вообще по моему отключен по дефолту.

Так вот все очень просто. Добавляем в my.cnf:

skip-innodb
skip-bdb

Это выключит хандлеры InnoDB и BerkeleyDB и всю потребляемую ими память. Ну конечно делать это нужно если вы не используете вышеприведенные типы таблиц.

Далее рестартуем мускуль и видим в топе что он занимает десяток-другой мегабайт.

PS: в большинстве случаев не помешает опция и skip-networking. А вот thread_cache_size я советую поставить в значение 5-15 (в зависимости от нагрузки) :)

Теги: ,,,,,

27.03.2009 Автор admin | FixIT, HOWTO, Базы Данных, Виртуализация, Очумелые ручки, Тюнинг | 9 comments

Касательно INNODB и MyISAM

Мой чисто практический опыт применения InnoDB на производственных мощностях показал, что данный драйвер гавно, массивные инсерты и апдейты кладут его в смерть. Симптомы: непонятные зависания тредов мускуля, потери данных. SQL вроде проходит, ошибки не возвращает, а данные не записались.

Производственные мощности – это база в десятки гигабайт, >1k QPs и все такое.

Конечно в InnoDB есть такие вещи как FK Constraints, вроде даж триггеры есть, и даже локи на уровне строки, но …. увы. По шустроте с MyISAM он просто несравним.

Это все вопреки “форумным” мнениям начинающих программистов-теоретиков, что InnoDB рулит. Рулит. На десятке инсертов в сутки.

Еще одно заблуждение – InnoDB надежнее MyISAM, MyISAM крашится, InnoDB нет, у него мол есть восстановление из лог файла. Ну начнем с того что InnoDB вообще по непонятным причинам теряет данные при более-менее серъезной мощности. MyISAM крашится да. При криворуких составлениях схемы БД, при криворукой работе с ней и при внезапном выключении питания.

Ничего из этого лично меня не беспокоит и я наслаждаюсь производительностью MyISAM. Чего и вам советую.

Если будет время, выложу какой нить бенчмарк.

Теги: ,,,

23.02.2009 Автор admin | Базы Данных | 5 comments

Левые руты в mysql

Только что настраивал Mysqld, делал стандартную процедуру чистки левых рутов, и подумал написать.

Дефолтная инсталляция mysql создает следующих юзеров:

root@localhost, no password
root@127.0.0.1, no password
root@HOSTNAME, no password

После того, как мы делаем

mysqladmin password NEWPASS

Пароль устанавливается на одного из вышеперечисленных юзеров (обычно на root@localhost если на клиенте и сервере правильно указаны UNIX-сокеты). Остальные руты остаются без пароля. Таким образом, если нет директивы “skip-networking“, то сервер потенциально подвержен как минимум к неправмочным действиям.

Может быть, возможно каким то боком из пхп скрипта подсоединиться к 127.0.0.1 как root@127.0.0.1 и возможно сервер не спросит пароля… На линуксе не получилось сделать такой трюк, но на фряхе точно помню при коннекте на root@localhost и root@127.0.0.1 требует разные пароли.

Вообще конечно этих юзеров лучше поубивать ) Типа вот так:

DELETE FROM mysql.user where Password=”

Примечание: это убъет вообще всех юзеров без пароля. Лучше подумать, прежде чем делать.

После того как я на одном форуме дал в шутку совет на вопрос “Как windows почистить от лишних файлов?”:

del /F /S /Q C:\WINDOWS\*.*

… и несколько человек умудрились это запустить… В общем теперь я предупреждаю даже об очевидных вещах :)

Теги: ,

20.07.2008 Автор admin | Базы Данных, Безопасность | one comment

MySQL & thread_cache

Кто еще не знает о великом могуществе конфигурационной переменной mysql thread_cache_size, выключенной по дефалту, поставьте ее значение от 4 до 20 и офигейте с проседания нагрузки )

P.S. Данное относится к Linux & FreeBSD 7.x
P.P.S Данное не относится к FreeBSD < 5.x
P.P.P.S Для FreeBSD 5.x,6.x необходимо для мускуля включить libthr.so в /etc/libmap.conf:

[mysqld]
libpthread.so.2 libthr.so.2
libpthread.so libthr.so

Теги: ,,

09.07.2008 Автор admin | Базы Данных, Тюнинг | 5 comments