Установка сервера БД MySQL
30 Dec 2009 | Автор: dd |Сейчас, в преддверии всяких разных настроек, типо почтарей, шейперов, сислогов и прочее, мы будем ставить open-sourse сервер БД от компании Sun MySQL. С использованием MySQL работа этих сервисов упрощается и функционирование значительно ускоряется. Писать о мускуле можно бесконечно, посему я этого делать не буду, если есть желание почитать, то это можно сделать на оффсайте. Естественно предполагается, что перед установкой, мы полностью заточили систему и обновили порты.
Итак установка мускуля. Ставить будем, актуальную на данный момент, версию MySQL 5.1.41. Существует три вида подобной установки и я пойду сверху вниз по мере усложнения.
1. Первый вид, наиболее простой и незатратный. Мы просто скачиваем с
# wget http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.41-freebsd7.0-i386.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
# tar -xzvf mysql-5.1.41-freebsd7.0-i386.tar.gz
# mv ./mysql-5.1.41-freebsd7.0-i386 /usr/local/mysql
Добавляем в систему пользователя и группу от которой будет работать демон mysqld, наречем его mysql. Зададим ему права на папку хранения баа данных, по умолчанию, и создадим первичный комплект БД MySQL.
# cd /usr/local/mysql
# chown -R mysql:mysql /usr/local/mysql/*
# scripts/mysql_install_db –user=mysql
# chown -R root .
# chown -R mysql data
Прописываем скрипт запуска сервера
# cp support-files/mysql.server /usr/local/etc/rc.d/
2. Этот способ lyssara-style, т.е. установка из портов. Выбираем версию сервера 5.1, на данный момент актуальной является версия 5.1.41
# cd /usr/ports/databases/mysql51-server/
# make && make install && make clean
##### Используемые по умолчанию параметры установки #####
WITH_CHARSET=charset Define the primary built-in charset (latin1).
WITH_XCHARSET=list Define other built-in charsets (may be ‘all’).
WITH_COLLATION=collate Define default collation (latin1_swedish_ci).
WITH_OPENSSL=yes Enable secure connections.
WITH_LINUXTHREADS=yes Use the linuxthreads pthread library.
WITH_PROC_SCOPE_PTH=yes Use process scope threads
(try it if you use libpthread).
BUILD_OPTIMIZED=yes Enable compiler optimizations
(use it if you need speed).
BUILD_STATIC=yes Build a static version of mysqld.
(use it if you need even more speed).
WITHOUT_THR_ALARM=yes Disable signals (this reduces kernel lock
contention on SMP, but has the side effect
that you can’t kill clients that are sleeping).
WITHOUT_INNODB=yes Disable support for InnoDB table handler.
WITH_ARCHIVE=yes Enable support for Archive Storage Engine.
WITH_CSV=yes Enable support for CSV Storage Engine.
WITH_FEDERATED=yes Enable support for Federated Storage Engine.
WITH_NDB=yes Enable support for NDB Cluster.
#####################################################
Смотрим файл Makefile и выбираем те параметры что интересуют нас и записываем их в /etc/make.conf У меня получилось следующее:
###########
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql51-server
WITH_CHARSET=utf8
WITH_XCHARSET=all
WITH_COLLATION=uft8_bin
WITH_LINUXTHREADS=yes
BUILD_OPTIMIZED=yes
BUILD_STATIC=yes
WITHOUT_INNODB=no
.endif
.if ${.CURDIR} == ${PORTSDIR}/databases/mysql54-client
WITH_CHARSET=utf8
WITH_COLLATION=utf8_bin
BUILD_OPTIMIZED=yes
.endif
###########
Копируем скрипт загрузки в rc.d
# cp /usr/local/share/mysql/mysql.server /usr/local/etc/rc.d/
3. И наконец последний. Из все предыдущих он наиболее родной для юникса, но при этом наиболее заковыристый. Но ведь настоящие программеры пишут в блокноте Итак скачиваем сырцы и устанавливаем в систему. Этот способ наиболее гибкий, т.к. можно варьировать всевозможные конфигурации, как и в случае с портами, но сырцы реже попадаются кривыми, нежели порты.
# tar -xzvf mysql-5.1.41.tar.gz
# cd mysql-5.1.41
Смотрим доступные для установки опции
# ./configure –help
Создаем шаманскую фразу призывающую демона MySQL снизойти на наш сервер
# ./configure –prefix=/usr/local/mysql –localstatedir=/usr/local/mysql/data –with-mysqld-user=mysql –with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock –with-charset=utf8 –with-extra-charsets=all –with-error-inject
# make && make install && make clean
# sh scripts/mysql_install_db
Теперь после того как мы поставили MySQL всеми этими различными способами, переходим к правке конфиг файла
# vi /usr/local/etc/my.cnf
####### Подробные описания параметров на
# Раздел настроек клиента MySQL
[client]
# Указываем сокет сервера, к которому следует обращаться.
# Можно также указать порт, на котором будет крутиться сервер,
# но поскольку мы планируем использовать сервер MySQL
# для локальных баз, то закомментируем эту директиву
# port = 3306
socket = /tmp/mysql.sock
# Указываем пароль для подключения к БД, если используем
# password = your_password
# Настройки сервера MySQL
[mysqld]
# Расположение баз данных MySQL
datadir=/usr/local/mysql/base
# Расположение сокета
socket=/tmp/mysql.sock
# Пользователь от которого запускается демон MySQL
user=mysql
# Адрес и порт на которых демон слушает обращения (для локальной базы
# оставляем 127.0.0.1 или не используем вовсе)
bind-address = 127.0.0.1
# port = 3306
# Размер блока для таблиц типа MyISAM- тот буфер памяти
# который система использует для индексирования. Максимальный размер
# на 32-битных платформах 4Gb. Обычно задают порядка
# 25% размера оперативной памяти.
key_buffer_size=50M
# Максимальный размер пакета. Изначально размер пакета
# задается параметром net_buffer_length, но в случае необходимости
# может возрасти до max_allowed_packet.
# Этот параметр, по умолчанию, задается небольшого значения,
# для отлова больших (предположительно ошибочных) пакетов.
max_allowed_packet = 1M
# Количество максимальных разрешенных клиентских сессий.
# По умолчанию этот параметр равен 100
max_connections=300
# Увеличение этого параметра увеличивает количество
# дискриптеров необходимых для mysqld.
# Выяснить необходимость увеличения табличного кэша,
# можно путем проверки статуса Opened_tables
table_cache = 4
# Каждому потоку, производящему операцию сортировки,
# выделяется буфер заданного размера. Увеличение этого параметра
# ускоряет выполнение операций ORDER BY и GROUP BY
sort_buffer_size = 1M
# Каждому потоку производящему операцию последовательного сканирования,
# выделяется буфер заданного (в байтах) размера,
# для каждой сканируемой таблицы.
# При множественных последовательных сканированиях, значение параметра
# имеет смысл увеличить, т.к. по умолчанию он равен 131072.
read_buffer_size = 1M
# При сортировке прочтенных строк происзводится операция ключевой сортировки,
# при которой строка считывается через заданный буфер,
# во избежании поиска на диске.
# Большое значение данного параметра способно значительно увеличить
# производительность операции ORDER BY.
read_rnd_buffer_size = 256K
# Каждый клиентский поток соотносится с буфером соединения и
# результирующим буфером. Оба они имеют размер заданный данным параметром,
# но при необходимости могут динамически увеличиваться,
# вплоть до величины заданной параметром max_allowed_packet.
# Каждый результирующий буфер сокращается до величины net_buffer_length
# после каждого SQL отчета.
net_buffer_length = 2K
# Этим параметром задается размер стека для каждого потока.
# Большое количество ограничений, обнаруживаемых тестом crash-me,
# зависит от значения этого параметра.
# Значения по умолчанию (192Kb) достаточно для нормальных операций.
thread_stack = 64K
# Не использовать системные блокировки
skip-locking
# Данный параметр, в режиме ON, используется для работы локальной БД,
# т.е. сервер MySQL не использует стек TCP/IP,
# а работает только через файл сокета.
# Данный параметр задается при конфигурации опцией
# –skip-networking (как и все доступные опции)
skip-networking
# Не резолвить доменные имена клиентов, и использовать только IP.
# Если используется этот параметр то поле Host в таблице
# разрешений (grant table) должно содержать только IP адреса или localhost
skip-name-resolve
# Отключение поддержки BDB (Berkeley DB), в том случае если нет
# необходимости поддержки BDB таблиц. Этот параметр позволяет сэкономить
# память и тем самым ускорить выполение некоторых операций.
skip-bdb
# Путь хранения лог файла (у пользователя mysql должны быть права на запись)
log-error=/var/log/mysql.errors
##########################################################
Вроде как все готово, можно запускать в плавание. Первый запуск осуществим командой:
# bin/mysqld_safe –user=mysql &
Дальнейшие манипуляции с сервером MySQL будем производить посредством запускающего скрипта
# /usr/local/etc/rc.d/mysql-server [fast|force|one](start|stop|restart|rcvar|status|poll)
Смотрим- все ли у нас запустилось:
# ps -axj | grep mysql
И начинаем размышлять, что теперь к этому серверу мы можем прикрутить.
Установка сервера БД MySQL,