Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #75, МАРТ 2005 г.

На лезвии ножа

Andrey Matveev

Хакер, номер #075, стр. 075-052-2


Для увеличения производительности следует, во-первых, при разбиении диска расположить разделы, к которым чаще всего происходит обращение (корневой раздел, раздел подкачки, /var и /tmp), ближе к краю диска (напомню, геометрия дисков такова, что за единицу времени с крайних дорожек можно прочесть больше данных, чем с дорожек, расположенных ближе к центру), во-вторых, распределить задачи, интенсивно работающие с винчем, между разными жесткими дисками, и в-третьих, применить особые опции монтирования: noatime для отключения записи времени доступа для каждого объекта файловой системы и softdep для включения механизма мягкого обновления.

Элегантное конфигурирование mySQL

Со вступлением закончили. Теперь перейдем к установке и конфигурированию сервера баз данных. Первой командой устанавливаем прекомпилированный пакет серверной части MySQL (все зависимости инсталлируются автоматически), а второй командой, чтобы проверить работоспособность БД, запускаем скрипт для создания типовых баз mysql и test:

# pkg_add mysql-server-4.0.20.tgz

# /usr/local/bin/mysql_install_db

В стартовом сценарии /etc/rc.local указываем опции для запуска mysqld. Напомню, что mysqld_safe - это своего рода обертка (wrapper), которая запускает mysqld с заданными параметрами, мониторит состояние демона и при необходимости перезапускает главный процесс MySQL. При загрузке ОС используем следующие опции: работа в фоновом режиме, запуск демона от имени непривилегированного пользователя _mysql (опечатки нет, первый символ действительно нижнее подчеркивание), число открытых файлов равно тысяче (это workaround для OpenBSD), mysqld должен не биндиться на сетевые адреса и работать через сокет (наша БД будет использоваться только локально установленными программами).

# vi /etc/rc.local

if [ -x /usr/local/bin/mysqld_safe ]; then

echo -n ' mysqld'

/usr/local/bin/mysqld_safe --user=_mysql \

--open-files=1000 --skip-networking \

--socket=/var/www/var/run/mysql/mysql.sock &

fi

Ни один серьезный сервис не обходится без собственного конфигурационного файла, и в данном случае MySQL не исключение. Мы возьмем предлагаемый разработчиками пример конфига, назначим ему корректные права доступа и отредактируем применительно к нашим задачам:

# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf

# chmod 644 /etc/my.cnf

# vi /etc/my.cnf

[client]

socket = /var/www/var/run/mysql/mysql.sock

[mysqld]

socket = /var/www/var/run/mysql/mysql.sock

skip-locking

key_buffer = 16M

max_allowed_packet = 1M

table_cache = 64

sort_buffer_size = 512K

net_buffer_length = 8K

myisam_sort_buffer_size = 8M

Все перечисленные параметры прекрасно документированы, поэтому здесь подробно не останавливаюсь. Отмечу только, что если ты планируешь превратить свой компьютер в мастер-сервер SQL и заняться репликацией баз данных, то не забудь добавить в секцию [mysqld] директивы log-bin и server-id = 1.

Назад на стр. 075-052-1  Содержание  Вперед на стр. 075-052-3