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

A database server is an critical component of the network infrastructure necessary for today’s applications. Without the ability to store, retrieve, update, and delete data (when needed), the usefulness and scope of web and desktop apps becomes very limited.

Install , Secure and Performance Tuning of MariaDB Server

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

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

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

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

Для краткости, в этом руководстве мы будем использовать только MariaDB, но обратите внимание, что помимо различных названий и философий разработки, оба системы управления реляционными базами данных (RDBMSs в сокращенной форме) практически идентичны.

Это означает, что команды с клиентской стороны одинаковы как в 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 RDBMS.

После установки вышеуказанных пакетов убедитесь, что служба баз данных запущена и активирована для запуска при загрузке (в 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 RDBMS
  2. удалить анонимные входы (тем самым разрешив вход только пользователям с действительной учетной записью в RDBMS)
  3. отключить доступ root для машин, отличных от localhost
  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], где обычно вы найдете только первые две настройки в таблице ниже. Остальные – это другие часто используемые параметры (где указано, мы изменим значение по умолчанию на выбранное нами):

Setting and description Default value
datadir is the directory where the data files are stored. datadir=/var/lib/mysql
socket indicates the name and location of the socket file that is used for local client connections. Keep in mind that a socket file is a resource that is utilized to pass information between applications. socket=/var/lib/mysql/mysql.sock
bind_address is the address where the database server will listen on for TCP/IP connections. If you need your server to listen on more than one IP address, leave out this setting (0.0.0.0 which means it will listen on all IP addresses assigned to this specific host).

Мы изменим это, чтобы указать службе слушать только на своем основном адресе (192.168.0.13):

bind_address=192.168.0.13

bind_address=0.0.0.0
port represents the port where the database server will be listening.

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

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

port=3306
innodb_buffer_pool_size is the buffer pool (in bytes) of memory that is allocated for data and indexes that are accessed frequently when using Innodb (which is the default in MariaDB) or XtraDB as storage engine.

Мы заменим значение по умолчанию на 256 МБ:

innodb_buffer_pool_size=256M

innodb_buffer_pool_size=134217728
skip_name_resolve indicates whether hostnames will be resolved or not on incoming connections. If set to 1, as we will do in this guide, only IP addresses.

Если вам не требуются имена хостов для определения разрешений, рекомендуется отключить эту переменную (для ускорения подключений и запросов), установив ее значение равным 1:

skip_name_resolve=1

skip_name_resolve=0
query_cache_size represents the size (in bytes) available to the query cache in disk, where the results of SELECT queries are stored for future use when an identical query (to the same database and using the same protocol and same character set) is performed.

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

query_cache_size=100M

query_cache_size=0 (which means it is disabled by default)
max_connections is the maximum number of simultaneous client connections to the server. We will set this value to 30:
max_connections=30Each connection will use a thread, and thus will consume memory. Take this fact into account while setting max_connections.
max_connections=151
thread_cache_size indicates the numbers of threads that the server allocates for reuse after a client disconnects and frees thread(s) previously in use. In this situation, it is cheaper (performance-wise) to reuse a thread than instantiating a new one.

Опять же, это зависит от количества ожидаемых подключений. Мы можем безопасно установить это значение в половину максимального количества подключений:

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

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

# cd major-MySQLTuner-perl-7dabf27

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

# ./mysqltuner.pl

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

MariaDB Performance Tunning

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

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

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

Сводка

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

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

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

Source:
https://www.tecmint.com/install-secure-performance-tuning-mariadb-database-server/