Бэкап базы MySQL/MariaDB из Docker

  N. Статьи

В Docker контейнеры часто помещают базы данных MySQL к примеру данную контейнеризацию использует панель управления ISPmanager. Чаще это делается из-за того, что на одной операционной системе может работать только одна версия MySQL/MariaDB. И единственный выход для установки нескольких — это использование контейнеров Docker.

Рассмотрим как можно сделать дамп базы из такого контейнера и загрузить его обратно.

Создание дампа базы из Docker

Для создания бэкапа базы данных, которая находится в контейнере, необходимо выполнить команду «mysqldump» внутри контейнера. Для этого используйте следующую команду:

docker exec -it id_контейнера mysqldump -u user--password=PWD DB > /dump.sql

Перед выполнением этой команды в ней необходимо заменить «id_контейнера» на нужный id (его можно узнать из вывода списка контенйеров командой «docker ps -a»). Также необходимо указать нужный путь и название файла дампа вместо /dump.sql, куда будет сохранена информация из базы (вне контейнера). И вставить нужного пользователя вместо «user«, пароль вместо «PWD» и название базы вместо «DB».

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

docker exec -it id_контейнера mysqldump --all-databases --routines --triggers > /dump.sql

Восстановление дампа в базу внутри контейнера Docker

Чтоб загрузить сохранённый дамп обратно в базу, необходимо выполнить команду:

cat /dump.sql | docker exec -i id_контейнера /usr/bin/mysql -u user --password=PWD DB

Суть в том, что файл дампа читается с помощью команды «cat», а затем всё передаётся в базу внутри контейнера. В этой команде, как и в предыдущем примере, необходимо вставить нужные значения вместо «id_контейнера», имени пользователя «user«, пароля «PWD» и названия базы данных «DB».