Резервное копирование и восстановление PostgreSQL

В этой инструкции описывается, как сделать дамп базы данных PostgreSQL в консоли при подключении по SSH с помощью утилит pg_dump, pg_dumpall, pg_restore.

Перед началом работы

  1. Войдите в консоль управления Advanced:

  2. Чтобы открыть список сервисов, нажмите Service List.

  3. Создайте экземпляр базы данных RDS PostgreSQL.

  4. Создайте виртуальную машину ECS и подключитесь к ней. В этом примере используется виртуальная машина под правлением ОС Linux — Ubuntu 20.04.

  5. В настройках группы безопасности откройте порт 5432, если он не был открыт ранее.

Создание бэкапа одной БД с помощью pg_dump

Утилита pg_dump — встроенный инструмент для создания резервных копий в PostgreSQL. Утилита имеет синтаксис:

pg_dump <параметры> <название БД> > <файл для сохранения копии>
  1. Подключитесь к виртуальной машине и обновите на ней репозитории.

    apt-get update
    
  2. Установите клиент на виртуальную машину.

    apt-get install postgresql-client
    
  3. Создайте бэкап.

    В общем виде команды достаточно указать название БД, которую в дальнейшем нужно будет восстановить. Резервная копия создается следующей командой:

    pg_dump -U <user> -W  -h <host> -p <port> <datastore> > /tmp/<datastore-backup>.dump
    

    В этом примере используется БД PostgreSQL с внешним IP (EIP) и названием БД «postgres», для входа необходимо указать пользователя root, а также пароль.

    pg_dump -U root -W -h 172.16.0.49 postgres > /tmp/postgres.dump
    

Параметры:

  • -U — имя пользователя экземпляра базы данных RDS. По умолчанию — root.

  • -h — IP-адрес экземпляра первичной БД. Получить этот IP-адрес можно на странице Instance Management, нажав на название экземпляра БД.

    Примечание

    Если подключение осуществляется:

    • через ECS, то IP-адрес можно найти на вкладке Basic Information в разделе Connection Information → Floating IP Address.

    • через EIP, то адрес IP будет располагаться на вкладке EIPs.

  • -p — использующийся порт для базы данных. По умолчанию значение порта — 5432.

  • -W — запрос пароля, который нужно будет указать при подключении. После запуска этой команды будет запрашиваться пароль.

В результате будет выполнен бэкап БД в файл «postgres» с расширением .dump.

Создание бэкапа всех имеющихся БД с помощью pg_dumpall

Утилита pg_dumpall реализует резервное копирование всего экземпляра (кластера или инстанса) базы данных без указания конкретной базы данных на инстансе. Принцип работы с ней аналогичен pg_dump.

  1. Установите клиент на виртуальную машину.

    apt-get install postgresql-client
    
  2. Создайте бэкап. Общий вид команды:

    pg_dumpall -U <user> -W -h <host> -p <port> <datastore> > /tmp/<datastore-backup>.bak
    

    Для сжатия резервной копии рекомендуется сразу передать вывод на архиватор gzip:

    pg_dumpall <datastore> | gzip > /tmp/<datastore-backup>.tar.gz
    

    В этом примере используется БД PostgreSQL с внешним IP (EIP) и названием БД «postgres», для входа необходимо указать пользователя root, а также пароль.

    pg_dumpall -U root -W -h 172.16.0.49 postgres > /tmp/postgres.bak
    

Параметры утилиты аналогичны pg_dump.

В результате будет выполнен бэкап всех имеющихся в системе БД в файл «postgres» с расширением .bak.

Восстановление из бэкапа с помощью pg_restore

Утилита позволяет восстанавливать данные из резервных копий. Например, чтобы восстановить только определенную БД (в нашем примере postgres), нужно запустить эту утилиту с параметром -d:

pg_restore -U <user> -W -h <host> -p <port> -d <datastore> /tmp/<datastore-backup>.bak

В этом примере используется БД PostgreSQL с внешним IP (EIP) и названием БД «postgres», для входа необходимо указать пользователя root, а также пароль.

pg_restore -U root -W -h 172.16.0.49 -d postgres /tmp/postgres.bak

Параметры:

  • -U — имя пользователя экземпляра базы данных RDS. По умолчанию — root.

  • -h — IP-адрес экземпляра первичной БД. Получить этот IP-адрес можно на странице Instance Management, нажав на название экземпляра БД.

    Примечание

    Если подключение осуществляется:

    • через ECS, то IP-адрес можно найти на вкладке Basic Information в разделе Connection Information → Floating IP Address.

    • через EIP, то адрес IP будет располагаться на вкладке EIPs.

  • -p — использующийся порт для базы данных. По умолчанию значение порта — 5432.

  • -W — запрос пароля, который нужно будет указать при подключении. После запуска этой команды будет запрашиваться пароль.

  • -d — название целевой БД.

  • -t — восстановление определенной таблицы.

  • -F — формат резервной копии. Допустимые форматы:

    • p, plain — формирует текстовый SQL-скрипт;

    • c, custom — формирует резервную копию в архивном формате;

    • d, directory — формирует копию в directory-формате;

    • t, tar — формирует копию в формате tar.

Запустили Evolution free tier
для Dev & Test
Получить