Linux: Настройка сервера баз данных MySQL
Перейдем ко второму практическому уроку серии и поговорим о настройке виртуального окружения выделенного сервера – подготовим узел (VM) предназначенный для хранения и обслуживания доступа к БД MySQL/PostgreSQL.
В этой установке, мы будем использовать сервер баз данных MySQL. Все настройки этого урока будут проводится исключительно на vm04 с IP-адресом 192.168.1.13
Установка сервера MySQL
Введите следующую команду yum-менеджера, что бы установить MySQL сервера баз данных на RHEL/CentOS Linux систему:
# yum install mysql mysql-server
Настройка сервера MySQL
Отредактируем файл /etc/my.cnf:
# vi /etc/my.cnf
Убедитесь, что MySQL сервер доступен с виртуальных машин vm01 и vm02 с установленными на нем Apache+php5. Найдите раздел [mysqld] и добавте/исправьте следующие параматеры, что бы mysqld служба БД стала доступна удаленно:
# Убедитесь, что директива skip-networking закомментирована (или удалена)
# skip-networking
# Включение удаленный доступ
bind-address=192.168.1.13
Оптимизация параметров MySQL-сервера
Необходимо оптимизировать сервер MySQL, иначе он отъест весомую часть ресурсов виртуальной машины vm04. Вы можете добавить или исправить настройки следующим образом (подробнее — в руководстве по MySQL).
########################################################################
# Внимание!!!
# Параметры безопасности и производительности
# Читайте манны mysqld и my.cnf для получения подробной информации
# т.к. следующие параметры зависят от установленного оборудования и
# конкретных требований к системе
########################################################################
# Из соображений безопасности рекомендуется отключить использование
# symbolic-links
symbolic-links=0
## Идем дальше, пропуская ряд прописанных параметров, YMMV
skip-name-resolve
skip-slave-start
skip-external-locking
# ИНДИВИДУАЛЬНЫЕ КЛИЕНТСКИЕ НАСТРОЙКИ #
# Завышенные параметры, но мои ресурсы позволяют #
sort_buffer_size = 2M
read_buffer_size = 2M
binlog_cache_size = 1M
wait_timeout = 200
interactive_timeout = 300
max_allowed_packet = 12M
thread_stack = 128K
table_cache = 1024
myisam_sort_buffer_size = 1M
tmp_table_size = 12M
max_heap_table_size = 12M
# ПРОТОКОЛИРОВАНИЕ #
log_queries_not_using_indexes = 1
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/slowquery.log
# Кэши и предельные значения #
tmp_table_size = 12M
max_heap_table_size = 12M
query_cache_type = 1
query_cache_limit = 2M
query_cache_size = 32M
max_connections = 500
thread_cache_size = 50
open_files_limit = 65535
table_definition_cache = 4096
table_open_cache = 1024
# MyISAM #
key_buffer_size = 32M
myisam_recover = FORCE,BACKUP
# БЕЗОПАСНОСТЬ #
max_allowed_packet = 16M
max_connect_errors = 1000000
# Бинарный лог #
log_bin = /var/lib/mysql/mysql-bin
expire_logs_days = 14
sync_binlog = 1
# InnoDB #
innodb_flush_method = O_DIRECT
innodb_log_files_in_group = 2
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1
innodb_file_per_table = 1
innodb_buffer_pool_size = 10G
Сохраним изменения и закроем файл. Перезагрузим/перезапустим сервер MySQL:
# chkconfig mysqld on
# service mysqld start
# service mysqld reload
# service mysqld restart
Убедимся, что на TCP-порту #3306 работает mysqld:
# netstat -tulpn | grep :3306
MySQL сервера баз данных конфигурации брандмауэра
Отредактируем конфигурацию брандмауэра /etc/sysconfig/iptables:
# vi /etc/sysconfig/iptables
Убедитесь, что виртуальные машины vm01 и vm02 могут получить доступ к серверу баз данных:
## Откройте порты mysqld для web-сервера Apache и Lighttpd #
-A INPUT -m state --state NEW -s 192.168.1.10 -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -s 192.168.1.11 -m tcp -p tcp --dport 3306 -j ACCEPT
Сохраните и закройте файл. Перезапустим службу iptables:
# service iptables restart
Увеличение дисковых квот и диапазона портов сервера БД
Для нагруженных серверов СУБД следует увеличить предельное количество дескрипторов файлов (FD limits) и увеличить число доступных IP-портов
# Увеличим предельное число дескрипторов файловой системы
fs.file-max = 50000
# Увеличим число доступных портов
net.ipv4. ip_local_port_range = 2000 65000
Активируем изменения, введя следующую sysctl-команду, изменяющую параметры ядра Linux исходя из указанных нами настроек:
# sysctl -p
Создание баз данных MySQL и учетных записей пользователей
В данном разделе приводятся основные параметры ручного создания базы данных MySQL.Для наглятности нашей задачи мы создадим базу данных MySQL и пользователя со следующими параметрами:
- ИМЯ БД: foo
- ИМЯ ПОЛЬЗОВАТЕЛЯ БД: bar
- ПАРОЛЬ БД: mypassword
- КОМУ РАЗРЕШЕН ДОСТУП К БД: localhost, vm01, vm02 со следующими IP-адресами — 192.168.1.10 и 192.168.1.11
Введите следующую команду для создания БД и требующихся пользователей:
# /usr/bin/mysql -u root -h localhost -p
Чтобы создать БД с именем foo, введите следующую команду в строке терминала mysql:
mysql > CREATE DATABASE foo;
Необходимо предоставить права доступа к этой БД пользователю MySQL с именем bar, под которым сервера приложений Apache + php5 будут подключаться к БД.
mysql > GRANT ALL ON foo.* TO bar@localhost IDENTIFIED BY 'mypassword';
mysql > GRANT ALL ON foo.* TO bar@192.168.1.10 IDENTIFIED BY 'mypassword';
mysql > GRANT ALL ON foo.* TO bar@192.168.1.11 IDENTIFIED BY 'mypassword';
Что бы выйти из консоли MySQL, введите следующую команду:
mysql > quit
Теперь можно создавать таблицы или загрузить данные, используя SQL-файл. Вы можете автоматизировать эту процедуру, написав шелл- или Perl-скрипт добавления пользователей MySQL и баз данных.
Проверьте вашу новенькую БД и пользовательские настройки с «удаленных» vm01 и vm02
Подключитесь через ssh к виртуальному узлу vm01 или узлу vm03 и введите следующую команду, чтобы проверить связь с Apache/Lighttpd web-сервером:
$ mysql -u bar -h 192.168.1.13 -p'mypassword' foo
или так:
$ mysql -u bar -h vm04 -p'mypassword' foo
PhpMyAdmin
PhpMyAdmin – известный web-интерфейс к БД MySQL. Этот серверный скрипт используется для удаленного администрирования MySQL с помощью одного лишь браузера. PhpMyAdmin может администрировать как весь сервер MySQL, так и одну базу данных. Этот пакет рекомендуется для всех новых пользователей базы данных MySQL и администраторов.
Автор: danielnewman