Резервное копирование и восстановление PostgreSQL
В этой инструкции описано, как сделать дамп базы данных PostgreSQL в консоли при подключении по SSH с помощью утилит pg_dump, pg_dumpall, pg_restore.
Перед началом работы
-
Войдите в консоль управления Advanced:
-
Создайте виртуальную машину ECS и подключитесь к ней. В этом примере используется виртуальная машина под управлением ОС Linux — Ubuntu 20.04.
-
В настройках группы безопасности откройте порт 5432.
Создание бэкапа одной базы данных с помощью pg_dump
Утилита pg_dump — встроенный инструмент для создания резервных копий в PostgreSQL. Утилита имеет синтаксис:
pg_dump <параметры> <название базы данных> > <файл для сохранения копии>
-
Подключитесь к виртуальной машине ECS и обновите ее репозитории:
apt-get update -
Установите клиент на виртуальную машину:
apt-get install postgresql-client -
Создайте бэкап:
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.
-
Установите клиент на виртуальную машину:
apt-get install postgresql-client -
Создайте бэкап:
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 — формат резервной копии. Допустимые форматы:
-
c, custom — формирует резервную копию в архивном формате;
-
d, directory — формирует копию в directory-формате;
-
t, tar — формирует копию в формате tar.
-
- Перед началом работы
- Создание бэкапа одной базы данных с помощью pg_dump
- Создание бэкапа всех имеющихся баз данных с помощью pg_dumpall
- Восстановление из бэкапа с помощью pg_restore