Резервное копирование и восстановление 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.