Как создать резервную копию базы данных PostgreSQL из контейнера Docker с использованием DBeaver?

Вопрос или проблема

У меня есть база данных Postgres, работающая в контейнере Docker на моем компьютере (на базе Ubuntu 20.04 Beta), и мне нужно сделать ее резервную копию.

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

изображение окна

У меня нет идеи, что нужно вставить сюда; я не нашел ничего полезного в документации; и в каждом руководстве, которое я нахожу в интернете, выпадающий список с клиентом имеет другие варианты, что не так в моем случае. Можете ли вы помочь?

Я попробовал выполнить это так же, как и вы, и столкнулся с той же проблемой. К сожалению, я не нашел способа решить вопрос с DBeaver, так что это может не быть тем, что вы ищете, но этот ответ помог мне получить то, что мне нужно: https://stackoverflow.com/a/29913462/9843399. Вот он с небольшими правками:

Создайте резервную копию вашей базы данных

docker exec -t <ваш-db-контейнер> pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql

Восстановите вашу базу данных

cat your_dump.sql | docker exec -i <ваш-db-контейнер> psql -U postgres

(Примечание: мне пришлось воссоздать свою схему перед тем, как восстановление прошло успешно. В моей версии это можно сделать в DBeaver, как: нажмите на вашу базу данных > щелкните правой кнопкой на “Schemas” > нажмите “Создать новую схему”)

Ответ или решение

Чтобы создать резервную копию базы данных PostgreSQL, работающей в контейнере Docker, с использованием DBeaver, можно столкнуться с проблемами, связанными с запросом к установке нативного клиента. Рассмотрим, как можно выполнить резервное копирование без этой дополнительной сложности.

Пошаговое руководство по резервному копированию PostgreSQL из контейнера Docker

  1. Подготовка окружения: Убедитесь, что у вас установлен Docker и DBeaver, а также что вы можете получить доступ к вашему контейнеру с базой данных.

  2. Определите имя вашего контейнера: Для начала вам нужно знать имя или ID вашего контейнера, в котором запущена база данных PostgreSQL. Это можно сделать с помощью команды:

    docker ps
  3. Создание резервной копии с помощью pg_dump: Вместо использования DBeaver, воспользуйтесь командой pg_dump для создания резервной копии базы данных. Откройте терминал и выполните следующую команду, заменив <your-db-container> на имя вашего контейнера:

    docker exec -t <your-db-container> pg_dumpall -c -U postgres > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql
    • Тут:
      • docker exec -t <your-db-container> позволяет вам выполнить команду внутри контейнера.
      • pg_dumpall — это утилита для резервного копирования всех баз данных.
      • -c — опция для очистки существующих объектов в целевой базе данных при восстановлении.
      • -U postgres указывает на пользователя PostgreSQL, с которым вы выполняете команду.
      • dump_date +%d-%m-%Y""%H%M_%S.sql будет именем файла резервной копии, включающим текущее время и дату.
  4. Проверка созданной резервной копии: После выполнения команды в указанной директории должен появиться файл с резервной копией базы данных.

Восстановление базы данных

  1. Используйте psql для восстановления резервной копии: Чтобы восстановить базу данных из резервной копии, используйте следующую команду:

    cat your_dump.sql | docker exec -i <your-db-container> psql -U postgres

    Здесь:

    • cat your_dump.sql читает содержимое файла резервной копии и передает его в стандартный ввод.
    • docker exec -i <your-db-container> psql -U postgres выполняет команду внутри контейнера для восстановления данных в базу.
  2. Создание схем перед восстановлением: Если вы получаете ошибки при восстановлении, возможно, вам потребуется предварительно создать необходимые схемы в DBeaver. Для этого:

    • Нажмите правой кнопкой мыши на вашу базу данных.
    • Перейдите в "Schemas" и выберите "Create New Schema".

Заключение

Хотя DBeaver предоставляет удобный графический интерфейс для управления базами данных, использование командной строки для выполнения резервного копирования и восстановления часто оказывается более гибким и надежным решением. Следуя вышеперечисленным шагам, вы сможете эффективно управлять резервными копиями вашей базы данных PostgreSQL в Docker.

Оцените материал
Добавить комментарий

Капча загружается...