Резервное копирование и восстановление 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 — формат резервной копии. Допустимые форматы:
p, plain — формирует текстовый SQL-скрипт.
c, custom — формирует резервную копию в архивном формате.
d, directory — формирует копию в directory-формате.
t, tar — формирует копию в формате tar.
- Перед началом работы
- Создание бэкапа одной БД с помощью pg_dump
- Создание бэкапа всех имеющихся БД с помощью pg_dumpall
- Восстановление из бэкапа с помощью pg_restore