MySQL
В данной статье мы рассмотрим пример запуска и настройки базы данных MySQL на платформе Dockhost.
MySQL — свободная реляционная система управления базами данных (СУБД). MySQL универсальна и применяется при разработке веб-сайтов, веб-приложений и корпоративных баз данных начального уровня.
В качестве примера мы возьмем MySQL 8, контейнер для базы данных будет иметь 1CPU (20%), 1Gb оперативной памяти, для хранения данных будет использоваться сетевой диск SSD ёмкостью 10Gb. При необходимости Вы можете изменить эти настройки на свои.
Создание диска
Для постоянного хранения данных необходимо создать сетевой диск. Для этого в проекте my-project (проект может быть любым, для примера мы будем использовать my-project, который создаётся по умолчанию при регистрации на платформе) необходимо перейти в раздел «Сетевые диски» и добавить новый сетевой диск.
Далее нажмите на кнопку «Применить» и дождитесь завершения процесса создания сетевого диска.
Для баз данных мы рекомендуем использовать сетевой диск с типом SSD.
Создание файла конфигурации my.cnf (опционально)
Для того чтобы иметь возможность управлять настройками базы данных, создайте файл конфигурации my.cnf. Для этого перейдите в раздел «Окружение», подраздел «Файлы конфигурации» и добавьте новый файл конфигураций.
В параметрах необходимо указать название my.cnf, а в значение:
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
innodb_buffer_pool_size = 720M
innodb_file_per_table = 1
character_set_server = utf8mb4
collation_server = utf8mb4_bin
bind-address = 0.0.0.0
max_connections = 1000
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
pid-file=/var/run/mysqld/mysqld.pid
[client]
socket=/var/run/mysqld/mysqld.sock
!includedir /etc/mysql/conf.d/
Далее нажмите на кнопку «Применить» и дождитесь завершения процесса создания файла конфигураций.
Создание и настройка контейнера
После создания сетевого диска и создания файла конфигурации базы данных my.cnf (опционально) необходимо запустить контейнер, для этого перейдите в раздел «Контейнеры» и добавьте контейнер.
Данный контейнер имеет следующие параметры:
- Образ mysql:8.0
- Указан 1CPU с резервом 20%
- Указан объём памяти 1024MiB, так как файл конфигурации my.cnf настроен на работу с объёмом памяти 1024MiB
- Добавлен порт 3306 для внешних подключений
- Добавлена переменная MYSQL_ROOT_PASSWORD с паролем для root пользователя
- (Опционально) Файл конфигурации my.cnf смонтирован в /etc/my.cnf
- Сетевой диск смонтирован в папку /var/lib/mysql
В качестве образа контейнера не рекомендуется указывать общие теги, такие как mysql:8, mysql, mysql:latest и т.д. После перезапуска контейнера база данных может обновиться до несовместимой версии.
Если запустить базу данных без смонтированного сетевого диска, то после перезагрузки контейнера данные будут утеряны.
После запуска контейнера в логах будет сообщение об успешном старте базы данных, и готовности принимать входящие соединения на порт 3306.
Подключение к базе из других контейнеров в проекте
Для подключения к базе данных из других контейнеров в имени хоста необходимо указать название контейнера, в данном примере это mysql и порт 3306, в качестве имени пользователя нужно указать root и пароль, который указан в переменной MYSQL_ROOT_PASSWORD.
Можно подключиться к базе данных по IP-адресу сетевого сервиса, который был создан с именем контейнера базы данных:
Для этого перейдите в раздел «Сетевые сервисы», подраздел «Сервисы» и выберите сервис с именем базы данных, в нашем примере это mysql. Указанный IP-адрес сервиса можно использовать в качестве хоста при подключении к базе данных.
Автоматическое разрешение имён контейнеров и сервисов работает только в рамках одного проекта. Получить доступ к базе данных по IP-адресу можно только в рамках одного проекта.
Подключение к базе через сетевой порт
Для того чтобы подключиться к базе данных извне необходимо создать новый сетевой порт, через который будет происходить подключение. Для этого перейдите в раздел «Сетевые сервисы», подраздел «Порты» и нажмите на кнопку «Добавить».
Далее нажмите на кнопку «Применить» и дождитесь завершения процесса создания сетевого порта. После того как сетевой порт будет создан, используйте данные из поля «Адрес» для подключения к базе данных.
Перед тем как открыть доступ к базе данных через сетевой порт, убедитесь, что Вы используете надёжный пароль. По возможности используйте консольную утилиту Dockhost CLI для подключения к базе данных.
Подключение к базе через Dockhost CLI
Консольная утилита Dockhost Cli позволяет безопасно подключиться к базе данных путём пробрасывания порта базы данных на локальный порт. Для подключения необходимо воспользоваться командой dockhost network port-forward, подробнее об этом можно узнать в описании команды network port-forward.
Например, для подключения к базе данных из примера в данной статье необходимо выполнить следующую команду:
dockhost network port-forward --project my-project mysql 3306:3306
Поле этого база данных будет доступна для подключения на локальном порте 3306.
Start forward 127.0.0.1:3306 <-> mysql:3306
Запуск базы данных из готовых файлов конфигурации
Для быстрого развёртывания базы данных можно воспользоваться готовой конфигурацией из репозитория https://github.com/dockhost/recipes.
В качестве примера развёртывания возьмём конфигурацию 1CPU-1024MB-10SSD, которая соответствует конфигурации из данной статьи.
В разделе проекта «Обзор» в меню «⋮» выберите пункт «Загрузить конфигурацию» или перейдите в раздел «Настройки» / «Конфигурация» и в меню «⋮» выберите пункт «Загрузить конфигурацию».
Далее нажмите на кнопку «Загрузить» и дождитесь завершения процесса загрузки файла конфигураций.
После загрузки файла конфигураций в проекте будет развёрнут контейнер с базой данных, файл конфигурации my.cnf, сетевой диск и переменные окружения с паролем для пользователя.
Используйте файлы конфигураций из репозитория https://github.com/dockhost/recipes как примеры для создания собственных конфигураций, которые затем можно легко использовать в проектах.