Установка MySQL 5.5 под FreeBSD

#0. Подготовка к установке

Установку СУБД MySQL в данной статье мы будет производить из коллекции портов FreeBSD. Предполагается, что на сервере установлена свежая версия коллекции портов. Если это не так, следует установить или обновить порты приложений с помощью утилиты portsnap.

# portsnap fetch extract - установить порты, если они отсутствуют в системе
# portsnap fetch update - обновить порты, если они присутствуют в системе

Далее нужно будет в /etc/make.conf указать некоторые опции сборки mysql55-server.

# vi /etc/make.conf

########## MySQL 5.5 ##########
.if ${.CURDIR} == "/usr/ports/databases/mysql55-server"
WITH_CHARSET=utf8               # Кодировка по-умолчанию
WITH_COLLATION=utf8_general_ci  # Сравнение по-умолчанию
WITH_XCHARSET=all               # Дополнительные кодировки
WITH_OPENSSL=yes                # Включить безопасные соединения через OpenSSL
WITH_LINUXTHREADS=no            # Работа в несколько нитей одновременно с помощью
                                # линуксовой библиотеки pthread
WITH_PROC_SCOPE_PTH=yes         # Работа в несколько нитей одновременно, для
                                # повышения производительности
BUILD_OPTIMIZED=yes             # Добавление флагов оптимизации, даёт
                                # небольшой прирост производительности
BUILD_STATIC=yes                # Сборка статической версии mysqld, даёт
                                # небольшой прирост производительности и
                                # независимость от внешних библиотек
WITH_NDB=no                     # Поддержка NDB storage engine (для кластеров)
.endif

#1. Установка MySQL 5.5 и инициализация директории данных

Заходим в порт mysql55-server, приступаем к установке. После установки перечитываем директории PATH с помощью rehash.

# cd /usr/ports/databases/mysql55-server/
# make install clean
# rehash

Сервер СУБД MySQL 5.5 установлен. Далее необходимо произвести инициализацию директории данных и первоначальную настройку. Инициализируем директорию данных MySQL, владельцем назначим непривилегированного пользователя «mysql».

# cd /usr/local
# mysql_install_db --user=mysql --datadir=/var/db/mysql
Installing MySQL system tables...
OK
Filling help tables...
OK

#2. Первоначальная настройка MySQL

Отлично, системные и вспомогательные таблицы созданы. Далее нужно создать конфигурационный файл mysql. Шаблоны конфигов mysql можно найти в /usr/local/share/mysql/:

# ls /usr/local/share/mysql/my-*
/usr/local/share/mysql/my-huge.cnf             # 2GB памяти
/usr/local/share/mysql/my-innodb-heavy-4G.cnf  # 4GB памяти
/usr/local/share/mysql/my-large.cnf            # 512MB памяти
/usr/local/share/mysql/my-medium.cnf           # 64MB памяти
/usr/local/share/mysql/my-small.cnf            # <64MB памяти

Общий объём используемой оперативной памяти для MySQL подсчитывается по формуле (основные параметры):

innodb_buffer_pool_size
+ key_buffer_size
+ max_connections*(sort_buffer_size+read_buffer_size+binlog_cache_size)
+ max_connections*2MB

В этой формуле не хватает ряда других параметров, использующих память, в контексте данной статьи будем использовать эту формулу. Если требуется подсчитать более точное максимальное количество памяти, которое может использовать mysql, можно воспользоваться следующей формулой (ниже). Как показывает практика, полученное значение памяти из следующей более сложной формулы не стоит воспринимать «как будет», значение обычно получается меньше.

Память на одно соединение     = read_buffer_size + read_rnd_buffer_size + sort_buffer_size +
                                + thread_stack + join_buffer_size;
1. Память на все соединения   = per_thread_buffers * max_connections;
2. Память используемая СУБД   = key_buffer_size + max_tmp_table_size + innodb_buffer_pool_size +
                                + innodb_additional_mem_pool_size + innodb_log_buffer_size +
                                + query_cache_size;
Суммарная используемая память = (Память используемая СУБД) + (Память на все соединения);

На стенд-сервере, куда мы устанавливаем MySQL имеется 16GB оперативной памяти. Будут использоваться таблицы MyISAM и InnoDB. Скопируем пример конфигурационного файла my-innodb-heavy-4G.cnf как /var/db/mysql/my.cnf.

# cp /usr/local/share/mysql/my-innodb-heavy-4G.cnf /var/db/mysql/my.cnf

После чего приводим его к следующему виду.

# vi /var/db/mysql/my.cnf
[mysqld]
port            = 3306              # Порт, на котором слушает mysqld
socket          = /tmp/mysql.sock   # Unix-сокет для mysqld
back_log = 128                      # Размер очереди для tcp/ip запросов на соединение
#skip-networking                    # Раскомментируйте данную директиву, если не планируется
                                    # разрешать соединения снаружи (только на localhost)
max_connections = 1000              # Максимальное количество соединений (сессий)
max_connect_errors = 1000           # Максимальное количество ошибок от каждого хоста. При 
                                    # достижении лимита происходит блокировка хоста.
table_open_cache = 2048             # Максимальное количество открытых таблиц
max_allowed_packet = 16M            # Максимальный размер пакета в запросе
binlog_cache_size = 1M              # Максимальный размер кэша бинарного лога, для отдельной
                                    # транзакции
read_buffer_size = 2M               # Размер буфера чтения для полного просмотра таблицы
read_rnd_buffer_size = 16M          # Размер буфера сортировки для запросов ORDER BY
sort_buffer_size = 8M               # Размер буфера сортировки для запросов GROUP BY, ORDER BY
join_buffer_size = 8M               # Размер буфера для запросов JOIN (без индексов)
thread_cache_size = 24              # Количество трэдов, которые не убиваются, а остаются в 
                                    # кэше для повторного использования
thread_concurrency = 8              # Максимальное количество потоков mysqld. Рекомендуется
                                    # устанавливать как [number of CPUs]*(2..4)
query_cache_type=1                  # Включение кэширования запросов
query_cache_size = 64M              # Размер кэша результатов запросов SELECT
query_cache_limit = 2M              # Размер максимальной выборки SELECT для кэширования
default-storage-engine = MYISAM     # Указываем тип таблиц по-умолчанию, если тип не указан 
                                    # в запросах CREATE TABLE
tmp_table_size = 64M                # Максимальный размер в памяти для создаваемых временных 
                                    # таблиц. Если больше - таблица записывается на диск 
#log-bin=mysql-bin                  # Раскомментируйте, если планируется использовать 
#binlog_format=mixed                # репликации для MySQL.
key_buffer_size = 1G               # Размер памяти, выделяемой для кэширования индексов
                                    # таблиц MyISAM. Важный параметр оптимизации
#skip-innodb                        # Раскомментируйте параметр, чтобы отключить InnoDB
innodb_additional_mem_pool_size = 16M # Выделенная память для внутренних нужд InnoDB
innodb_buffer_pool_size = 2G        # Объём памяти, выделенной для InnoDB. Чем больше - тем 
                                    # лучше. Снижает количество дисковых операций
innodb_data_file_path           = ibdata1:100M:autoextend # Размер стораджа данных таблиц
                                                          # InnoDB, авторасширяемый.
innodb_file_per_table           = 1 # Каждая таблица будет храниться в отдельном файле
innodb_thread_concurrency = 16      # Максимальное количество потоков mysqld для innodb

#3. Первый пуск MySQL и завершение установки

После первоначальной настройки СУБД MySQL мы должны запустить сервер и настроить запуск mysqld при старте системы. Управлять состоянием mysqld можно через rc-скрипт, который автоматически после сборки порта записался как /usr/local/etc/rc.d/mysqld-server. Запускаем СУБД.

# echo 'mysql_enable="YES"' >> /etc/rc.conf
# echo 'mysql_dbdir="/var/db/mysql"' >> /etc/rc.conf
# /usr/local/etc/rc.d/mysql-server start
Starting mysql.

Проверим, что mysql действительно запустился и работает от пользователя mysql.

# ps wwaux | grep mysql
mysql 28671  0.3  2.6 3486888 440948  ??  I    11:08PM   0:00.65 /usr/local/libexec/mysqld --defaults-extra-file=/var/db/mysql/my.cnf --basedir=/usr/local --datadir=/var/db/mysql --plugin-dir=/usr/local/lib/mysql/plugin --log-error=/var/db/mysql/inter.onsever.ru.err --open-files-limit=8192 --pid-file=/var/db/mysql/inter.onsever.ru.pid --socket=/tmp/mysql.sock --port=3306
mysql 28026  0.0  0.0  8296  1884  ??  Is   11:08PM   0:00.02 /bin/sh /usr/local/bin/mysqld_safe --defaults-extra-file=/var/db/mysql/my.cnf --user=mysql --datadir=/var/db/mysql --pid-file=/var/db/mysql/inter.onsever.ru.pid
root  28683  0.0  0.0  9124  1420   0  S+   11:09PM   0:00.00 grep --color=auto mysq

Всё верно. Далее - установим пароль пользователя root (по-дефолту пароль пустой), после чего обновим таблицу привилегий mysql.

# mysqladmin -uroot password 'новый_пароль'
# mysql -uroot -p -e 'flush privileges'
Enter password: вводим новый пароль

Заключительным шагом - запустим утилиту безопасности mysql_secure_installation, с помощью которой удалим анонимного пользователя, тестовую базу данных, которые создаются по-умолчанию при инициализации директории данных и запретим удалённый вход для пользователя root (не системный пользователь).

# mysql_secure_installation

Enter current password for root (enter for none): вводит пароль суперпользователя mysql
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

На этом установка и первоначальная настройка СУБД MySQL закончена. Успехов в использовании и оптимизации!

mysql/ustanovka_mysql_5.5_pod_freebsd.txt · Последние изменения: 2015/02/01 13:50 — vav
Наверх
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0