В этой статье мы рассмотрим как правильно установить и настроить сервер MySQL (MariaDB 10.3) для продуктового использования. Для настройки будем использовать установку СУБД в виде приложения Docker, при этом все постоянные данные будут храниться в файловой системе хоста.
Если вам интересно узнать о преимуществах MariaDB перед стандартной реализацией от Oracle, читайте статью, посвященную этому вопросу.
Docker. Использование Docker-контейнера позволяет не только обеспечивает чистое развертывание, не зависящее от программного обеспечения сервера, но и позволяет поддерживать несколько СУБД MySQL разных версий и различного назначения в рамках одной операционной системы.
MariaDB. Открытость, темп разработки и улучшения MariaDB гораздо выше, чем у традиционного MySQL, поэтому многие дистрибутивы используют его по умолчанию, а разработчики предпочитают движок MariaDB традиционному MySQL из-за новых возможностей, которые отсутствуют в MySQL.
Установка Docker
Если у вас уже настроен и установлен Docker, просто пропустите этот шаг. Если Docker не установлен, установите его по одному из руководств: Ubuntu 16.04 и 18.04, Debian 9 и 10, Centos 7 и приступайте к следующему шагу.
Настройка MariaDB 10.3
При установке MariaDB мы будем использовать внешний конфигурационный файл и внешний каталог хранения данных для того, чтобы при перезапуске контейнера вся информация оставалась в сохранности. Сначала создадим необходимые каталоги, в которых будут храниться настройки, журналы и базы данных MySQL:
sudo mkdir -p /opt/mariadb/{data,etc,logs}
Создадим конфигурационный файл /opt/mariadb/etc/config.cnf, который будет уточнять настройки, применяемые контейнером по умолчанию. В этом файле вы можете переопределять переменные MySQL для задания нужного поведения. Мы определим 3 переменных для демонстрации возможностей:
[mysqld] log_error=/var/lib/mysql/logs/errorlog slow_query_log=on slow_query_log_file=/var/lib/mysql/logs/slowlog
Теперь можно запустить сам сервер MySQL:
sudo docker run -d --restart=always --name mariadb_1 \ -v /opt/mariadb/data:/var/lib/mysql \ -v /opt/mariadb/etc:/etc/mysql/conf.d \ -v /opt/mariadb/logs:/var/lib/mysql/logs \ -e MYSQL_ROOT_PASSWORD=secret \ -p 127.0.0.1:3306:3306 mariadb:10.3
Обратите внимание на пароль пользователя root, который задается с помощью переменной окружения MYSQL_ROOT_PASSWORD. Этот пароль будет записан в системную БД mysql, если вы после остановите контейнер и поменяете его, это не окажет влияние на пароль в БД.
Проверка работоспособности
Проверить работоспособность сервера проще всего с помощью консольного клиента MySQL:
sudo docker run -it --rm --link mariadb_1:mysql mariadb:10.3 \ mysql -hmysql -uroot -psecret Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9 Server version: 10.3.13-MariaDB-1:10.3.13+maria~bionic-log mariadb.org binary distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> select version(); +--------------------------------------------+ | version() | +--------------------------------------------+ | 10.3.13-MariaDB-1:10.3.13+maria~bionic-log | +--------------------------------------------+ 1 row in set (0.000 sec)
Выгрузка дампов с помощью MySQLDump
Выгрузка данных БД для резервных копий в самом простом случае может выполняться стандартным MySQLDump:
sudo docker run -it --rm --link mariadb_1:mysql mariadb:10.3 \ mysqldump --all-databases -hmysql -uroot -psecret > all-databases.sql
Заключение
В этом простом руководстве вы научились как развернуть сервер MariaDB, подходящий для продуктового использования с помощью Docker. Хранение файлов в каталогах хоста позволяет изменять настройки сервера, получать доступ к записям журналов и сами данным баз данных.
Читайте о популярных ошибках, которые часто встречаются при настройке MySQL в нашей статье.