Поиск по сайту:

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


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

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

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

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

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

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

Это означает, что клиентские команды одинаковы как для 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-доступ для компьютеров, отличных от 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

Значение по умолчанию

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).

We will change this to instruct the service to listen only on its main address (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.

We will replace the default value(3306) with 20500 (but we need to make sure nothing else is using that port):
port=20500

While some people will argue that security through obscurity is not good practice, changing the default application ports for higher ones is a rudimentary -yet effective- method to discourage port scans.

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.

We will replace the default value with 256 MB:

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.

Unless you require hostnames to determine permissions, it is advisable to disable this variable (in order to speed up connections and queries) by setting its value to 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.

You should choose a query cache size that matches your needs based on 1) the number of repetitive queries, and 2) the approximate number of records those repetitive queries are expected to return. We will set this value to 100 MB for the time being:

query_cache_size=100M

query_cache_size=0 (что означает, что он отключен по умолчанию)

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.

Again, this depends on the number of connections you are expecting. We can safely set this value to half the number of max_connections:

thread_cache_size=15

thread_cache_size=0 (по умолчанию отключено)

В 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

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

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

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

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

Краткое содержание

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

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

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