Резервное копирование и восстановление 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. Подключитесь к виртуальной машине ECS и обновите ее репозитории:

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

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

    pg_dump <datastore> > /tmp/<datastore-backup>.dump
    

Где:

  • datastore — название БД.

  • datastore-backup — файл для бэкапа.

В результате создан бэкап БД в файл datastore-backup с расширением .dump.

В синтаксис утилиты можно добавить параметры:

  • -U — авторизация под определенным пользователем.

  • -W — запрос пароля при подключении.

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

  • -h — IP-адрес первичной БД.

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

    • через ECS, то IP-адрес находится на вкладке Basic Information → Connection Information в поле Floating IP Address;

    • через EIP, то IP-адрес находится на вкладке EIPs.

Например, чтобы сделать резервную копию базы данных PostgreSQL с внешним IP (EIP), названием «postgres», входом по паролю и под пользователем root, введите команду:

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

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

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

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

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

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

    pg_dumpall <datastore> > /tmp/<datastore-backup>.bak
    

Где:

  • datastore — название БД.

  • datastore-backup — файл для бэкапа.

В результате создан бэкап БД в файл datastore-backup с расширением .bak.

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

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

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

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

Утилита pg_restore восстанавливает данные из резервных копий.

Например, чтобы восстановить определенную БД, запустите эту утилиту с параметром -d:

pg_restore -d <datastore> /tmp/<datastore-backup>.bak

Где:

  • datastore — название БД.

  • datastore-backup — файл с бэкапом.

В результате бэкап БД восстановлен в файл datastore-backup с расширением .bak.

В синтаксис утилиты можно добавить параметры:

  • -U — авторизация под определенным пользователем.

  • -W — запрос пароля при подключении.

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

  • -h — IP-адрес инстанса первичной БД.

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

    • через ECS, то IP-адрес находится на вкладке Basic Information → Connection Information в поле Floating IP Address;

    • через EIP, то IP-адрес находится на вкладке EIPs.

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

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

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

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

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

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

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

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