Перед чем мы начнем
Вы должны иметь рабочую установку PostgreSQL в вашей системе перед началом этого руководства.
Изучите наши руководства по установке СУБД и начале работы с ней:
- 🇲🇦 Как установить PostgreSQL в RHEL 8
- ♓ Как установить PostgreSQL 11 на Debian 10 (Buster)
- Как установить PostgreSQL 11 на Fedora 28/27/26
- Как установить PostgreSQL 11 на CentOS / RHEL 7/6
- Как установить PostgreSQL 11 на FreeBSD 12
Шаги в этом руководстве требуют привилегий суперпользователя. Обязательно выполните шаги, показанные ниже от имени пользователя root или с префиксом sudo.
Однократный дамп SQL
Единая база данных
PostgreSQL предоставляет утилиту pg_dump для упрощения резервного копирования одной базы данных.
Эта команда должна выполняться от имени пользователя с правами на чтение в базу данных, резервную копию которой вы собираетесь создать.
Войдите как пользователь postgres:
su - postgres
pg_dump dbname > dbname.bak
dropdb dbname
createdb dbname
Восстановите базу данных, используя psql:
psql test < dbname.bak
- * .bak: сжатый двоичный формат
- * .sql: дамп открытого текста
- * .tar: тарбол
Удаленная база данных
Так же, как psql позволяет вам подключаться к удаленному хосту, pg_dump может запускаться с клиентского компьютера для резервного копирования данных на удаленном сервере.
Используйте флаг -h для указания IP-адреса вашего Linode и -p для определения порта, который прослушивает PostgreSQL:
pg_dump -h 198.51.100.0 -p 5432 dbname > dbname.bak
Все базы данных
Поскольку pg_dump создает резервную копию только одной базы данных за 1 раз, она не хранит информацию о ролях базы данных или другой конфигурации всего кластера.
Для хранения этой информации и одновременного резервного копирования всех ваших баз данных вы можете использовать pg_dumpall.
Создайте файл резервной копии:
pg_dumpall > pg_backup.bak
psql -f pg_backup.bak postgres
Автоматизация резервного копирования с помощью Cron
Возможно, вы захотите настроить задание cron, чтобы ваша база данных автоматически создавала резервные копии через регулярные промежутки времени.
В этом разделе будет показано, как настроить задачу cron, которая будет запускать pg_dump раз в неделю.
su - postgres
Создайте каталог для хранения автоматических резервных копий:
mkdir -p ~/postgres/backups
Отредактируйте crontab, чтобы создать новую задачу cron:
crontab -e
Добавьте следующую строку в конец crontab:
0 0 * * 0 pg_dump -U postgres dbname > ~/postgres/backups/dbname.bak
- 🏌️♂️ Как запустить задание cron в определенные дни недели
- Что такое cron и как он используется в Linux
- ⌚ Как создавать и управлять заданиями Cron в Linux
- Справочное руководство по Linux Crontab
- 😿 Как перечислить задания Cron в Linux