- tocdepth
2
Резервное копирование и восстановление 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-адрес находится на вкладке 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-адрес находится на вкладке Floating IP Address;
в полечерез EIP, то IP-адрес находится на вкладке EIPs.
-d
— название целевой БД.-t
— восстановление определенной таблицы.-F
— формат резервной копии. Допустимые форматы:p, plain — формирует текстовый SQL-скрипт.
c, custom — формирует резервную копию в архивном формате.
d, directory — формирует копию в directory-формате.
t, tar — формирует копию в формате tar.
для Dev & Test