October 12

Бэкап панели с доменами [консоль]

Создание бэкапа

  • Убедиться, что контейнер mysql запущен
  • Зайти в консоль, перейти в корневую директорию пользователя (cd /root), ввести команду docker ps , ответом должно прийти что-то типа такого:
Красным выделен ID mysql контейнера
  • Нас интересует ID контейнера mysql, копируем его куда-то
  • Далее формируем команду:

docker exec -it [ID] mysqldump -u[user] -p[password] [db_name] > [file.sql]

Где:

[ID] - id контейнера, который копировали выше

[user] - юзер от mysql (обычно root, вводить без пробела от флага -uroot)

[password] - пароль от mysql (вводить без пробела от флага -pPaSsWoRd)

[db_name] - имя базы данных

[file.sql] - имя файла куда будет сохранен дамп базы

В итоге должна получиться примерно такая команда:

docker exec -it 789fd074b575 mysqldump -uroot -proot shft-domain-control-api > backup.sql

  • После того как отработает команда, в директории /root появится файл backup.sql
  • Далее нужно будет его открыть через редактор nano, удалить первую строчку и сохранить файл.
  • Бэкап готов.

Восстановление бэкапа

  • После того как на новом месте поднята панель, копируем в корневую директорию пользователя (/root) файл с бэкапом базы.
  • Узнаем ID mysql контейнера, вводим команду docker ps, ищем значение в столбце CONTAINER ID на строке с именем образа mysql, так же как и на этапе создания бэкапа. Копируем или сохраняем этот ID.
  • Формируем команду для восстановления бэкапа:

docker exec -i [ID] mysql -u[user] -p[password] [db_name] < [file.sql]

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

docker exec -i 024a8e898ec3 mysql -uroot -proot shft-domain-control-api < backup.sql

-=Пока не вводим её, а сохраняем куда-то, чтоб была в быстром доступе=-

  • Подключаемся к контейнеру mysql, а далее к БД из консоли:

docker exec -it [ID_контейнера] bash - подключаемся к контейнеру

mysql -u[user] -p[passwd] - подключаемся непосредственно к БД, в нашем случае команда будет выглядеть так: mysql -uroot -proot

Подключение к контейнеру и базе
  • Подключившись к БД подготавливаем её:

DROP DATABASE `shft-domain-control-api`; - удаляем базу

Можно проверить удалилась она или нет командой SHOW DATABASES; её не должно быть в списке.

CREATE DATABASE `shft-domain-control-api`; - создаем чистую базу

Удаление и создание чистой базы

Быстро выходим из mysql командой exit

И из контейнера, еще раз команда exit

Выход из mysql и контейнера
  • А после, сразу же вставляем заготовленную команду которую сохраняли
Результат восстановления БД
  • PROFIT!!!