ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как установить, защитить и настроить производительность сервера базы данных MariaDB в Linux

Сервер базы данных является критически важным компонентом сетевой инфраструктуры, необходимой для современных приложений. Не имея возможности хранения, извлечения, обновления и удаления данных (при необходимости), полезность и объем веб-и настольных приложений становится очень ограниченным.

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

В этой статье мы кратко рассмотрим, как установить сервер базы данных MariaDB, и затем мы расскажем, как настроить его.

Установка и обеспечение безопасности сервера MariaDB

В CentOS 7.x , MariaDB заменен на MySQL, который до сих пор можно найти в Ubuntu (наряду с MariaDB). То же самое верно и для OpenSUSE .

Для краткости мы будем использовать только MariaDB в этом учебнике, но обратите внимание, что помимо того, что различные имена и философии развития, как реляционная база данных системы управления ( РСУБД для краткости) практически идентичны.

Это означает , что на стороне клиента команды одинаковы на обоих MySQL и MariaDB и конфигурационные файлы названы и расположены в одних и тех же местах.

Чтобы установить MariaDB, сделайте следующее:

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
yum update && yum install mariadb mariadb-server # CentOS 
--------------- On Debian and Ubuntu --------------- 
$ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server 
--------------- On openSUSE --------------- 
zypper update && zypper install mariadb mariadb-tools # openSUSE

 

Обратите внимание, что в Ubuntu, вам будет предложено ввести пароль для РСУБД пользователя root.

После того, как были установлены вышеуказанные пакеты, убедитесь, что служба базы данных запущена и активирована для запуска при загрузке (в CentOS и OpenSUSE вам нужно будет выполнить эту операцию вручную, в то время как в Ubuntu процесс установки уже позаботились об этом для вас):

--------------- On CentOS/RHEL 7 and Fedora 23 --------------- 
systemctl start mariadb && systemctl enable mariadb 
--------------- On openSUSE --------------- 
systemctl start mysql && systemctl enable mysql

 

Затем запустите скрипт mysql_secure_installation. Этот процесс позволит вам:

  1. Установить / сбросить пароль для РСУБД пользователя root
  2. Удалить анонимные логины (что позволяет только пользователям с допустимой учетной записью, чтобы войти в РСУБД)
  3. Отключить доступ root для целей, отличных от машин локального хоста
  4. Удалить тестовую базу данных (к который любой желающий может получить доступ)
  5. Активировать изменения, связанные с 1 по 4.

Для более подробного описания этого процесса, вы можете обратиться к разделу установки в посте Установка MariaDB базы данных в RHEL / CentOS / Fedora и Debian / Ubuntu.

Настройка сервера MariaDB

Параметры конфигурации по умолчанию считываются из следующих файлов в заданном порядке: /etc/mysql/my.cnf, /etc/my.cnf, и ~/.my.cnf.

Чаще всего существует только /etc/my.cnf. Именно в этом файле, в который мы установим общесерверных настройки (которые могут быть переопределены с теми же настройками ~/.my.cnf для каждого пользователя).

Первое, что нам необходимо отметить о my.cnf, что параметры разбиты на категории (или группы), где каждое название категории, заключенное в квадратные скобки.

Системные конфигурации сервера приведены в разделе [mysqld], где, как правило, вы найдете только первые два параметра в приведенной ниже таблице. Остальные другие часто используемые параметры (если не указано иное, мы изменим значение по умолчанию на пользовательское значение по нашему выбору):

Установка и описание Значение по умолчанию
datadir это каталог , где сохраняются файлы данных. datadir=/var/lib/mysql
socket указывает имя и местоположение файла сокета, который используется для локальных клиентских подключений. Имейте в виду, что файл сокета является ресурсом, который используется для передачи информации между приложениями. socket=/var/lib/mysql/mysql.sock
bind_address это адрес, по которому сервер базы данных будет прослушивать соединения по TCP / IP. Если вам нужен сервер для прослушивания на более чем один IP-адрес, оставьте эту настройку (0.0.0.0, который означает, что он будет прослушивать все IP-адреса, присвоенные этому конкретному хозяину). Мы изменим эту функцию, чтобы поручить обслуживание слушать только на его основной адрес (192.168.0.13):

bind_address = 192.168.0.13

bind_address=0.0.0.0
port представляет собой порт, на котором сервер базы данных будет прослушивать. Мы заменим значение по умолчанию (3306) с 20500 (но нам нужно убедиться, что ничего не использует этот порт):

port = 20500

В то время как некоторые люди утверждают, что безопасность через неизвестность не является хорошей практикой, изменение портов приложений по умолчанию для более высоких является рудиментарным -Дополнительное эффективно – метод, чтобы препятствовать сканирования портов.

port=3306
innodb_buffer_pool_size является буферный пул (в байтах) памяти, которая выделяется для данных и индексов, которые доступны часто при использовании Innodb (который по умолчанию в MariaDB) или XtraDB в качестве механизма хранения. Мы заменим значение по умолчанию 256 МБ:

innodb_buffer_pool_size = 256M

innodb_buffer_pool_size = 134217728
skip_name_resolve указывает на то, будет ли разрешены или нет имена хостов для входящих соединений. Если установлено значение 1, как мы будем делать в данном руководстве, т.е. только IP-адреса. Если вам не требуется имя хоста для определения разрешений, рекомендуется отключить эту переменную (для того, чтобы повысить скорость соединения и запросы), установив его значение на 1:

skip_name_resolve = 1

skip_name_resolve=0
query_cache_size представляет размер (в байтах), доступной для кэша запросов на диске, где результаты запросов SELECT, сохраняются для дальнейшего использования при выполнении идентичных запросов (к той же базе данных и используя тот же протокол и тот же набор символов). Вы должны выбрать размер кэша запросов, который соответствует вашим потребностям на основе 1) число повторных запросов, и 2) приблизительное количество записей, где повторяются эти запросы, как ожидается, чтобы вернуться. Мы установим это значение до 100 МБ на данный момент:

query_cache_size = 100M

query_cache_size=0 (which means it is disabled by default)
max_connections максимальное количество одновременных клиентских подключений к серверу. Мы установим это значение до 30:

max_connections = 30

Если соединение будет использовать нить, и ,таким образом, будет потреблять память. Примите во внимание этот факт при установке max_connections.

max_connections=151
thread_cache_size указывает количество потоков, которые сервер выделяет для повторного использования после отключения клиента и высвобождает нить(и) ранее использованные. В этой ситуации, это дешевле (с точки зрения производительности), чтобы повторно использовать нить, чем добавлять новую. Опять же, это зависит от количества соединений, которое вы ожидаете. Мы можем с уверенностью установить это значение на половину числа max_connections:

thread_cache_size = 15

thread_cache_size=0 (disabled by default)

В CentOS , нам нужно будет сообщить SELinux, чтобы позволить MariaDB слушать на нестандартном порту ( 20500 ) до перезапуска службы:

yum install policycoreutils-python
semanage port -a -t mysqld_port_t -p tcp 20500

 

Затем перезапустить службу MariaDB.

Настройка производительности MariaDB

Чтобы помочь нам в проверке и настройке конфигурации в соответствии с нашими конкретными потребностями, мы можем установить mysqltuner (скрипт , который будет предоставлять предложения по улучшению работы нашего сервера баз данных и повышения ее устойчивости):

wget https://github.com/major/MySQLTuner-perl/tarball/master
tar xzf master

 

Затем измените каталог в папку, извлеченной из архива (точная версия может отличаться в вашем случае):

cd major-MySQLTuner-perl-7dabf27

 

и запустите его (вам будет предложено ввести данные учетной записи администратора MariaDB)

./mysqltuner.pl

 

Выход сценария само по себе очень интересен, но давайте переходить к нижней части, где переменные для настройки перечислены с рекомендуемого значения:

Тюнинг производительности MariaDB

Тюнинг производительности MariaDB

Параметр query_cache_type указывает на то, отключен ли кэш запросов (0) или включен (1) . В этом случае mysqltuner советует нам, чтобы отключить его.

Так почему же мы советуем отключить его сейчас? Причина заключается в том, что кэш запросов полезен в основном в сценариях высоких чтения / записи с низким уровнем (который не наш случай, так как мы только что установили сервер базы данных).

ВНИМАНИЕ : Перед внесением изменений в конфигурацию производительности сервера, настоятельно рекомендуется проконсультироваться с экспертом администратора базы данных, чтобы гарантировать, что рекомендация дается mysqltuner не скажется негативно на существующей обстановке.

Как установить, защитить и настроить производительность сервера базы данных MariaDB в Linux

Резюме

В этой статье мы объяснили , как настроить сервер базы данных MariaDB после того, как мы установили , и закрепили ее. Переменные конфигурации, перечисленные в таблице выше, являются лишь несколькими параметрами, которые вы можете рассмотреть при подготовке сервера для использования или при настройке его позже. Всегда обращайтесь к официальной документации MariaDB перед внесением изменений или обратитесь к нашим советам по настройки производительности MariaDB:

Не пропустите: 15 Полезных настроек производительности и советы по оптимизации в  MariaDB

Как всегда, не стесняйтесь, дайте нам знать, если у вас есть какие-либо вопросы или замечания по поводу этой статьи. Существуют ли какие-либо другие параметры сервера, которые вы хотите использовать? Не стесняйтесь делиться с остальными, используя форму комментария ниже.

Exit mobile version