news
Serverspace добавил возможность подключения S3 к сервису CDN
KA
29 сентября 2023
Обновлено 1 октября 2023

Как создать бэкап и восстановить его в PostgreSQL?

Linux Базы данных

Введение

К современной информационной системе предъявляется множество требований по эффективности и стабильности работы. Одно из них — отказоустойчивость, обеспечивающая защиту от атак на целостность и доступность, технических проблем и других различных инцидентов, которые могут повредить достаточно большое количество данных. Для использования инструментов и утилит необходимо определить область применения, в данной инструкции мы рассмотрим резервирование и резервное копирование данных в СУБД PostgreSQL с помощью проприетарных утилит.

Лучшие практики

Существуют базы данных различного размера, структуры и объема, но нам необходимо создать резервную копию с сохранением целостности и правильно ее восстановить. Утилиты, которые мы можем использовать, это pg_dump и psql или pg_restore. Они используют механизм чтения текущих баз данных и преобразования их в команду в текстовом файле, поэтому на вход утилиты мы указываем БД, а на выходе получаем текстовый файл.

Этот метод имеет ряд преимуществ: согласованность версий, простота на этапе экспорта и отсутствие необходимости в привилегированных правах в системе. Для использования этого типа резервного копирования прежде всего необходимо проверить наличие баз данных и выбрать нужный объект:

\l
Список баз данных
Скриншот №1 — Список баз данных

Давайте проверим, как выглядят данные? Введите команду ниже:

SELECT * FROM customers;
Наполнение базы
Скриншот №2 — Наполнение базы

У нас есть тестовая запись в БД с данными теоретического пользователя, мы используем утилиту pg_dump с опциями: -U для определения пользователя СУБД, -d для идентификации базы данных, а для удаленного администрирования можно использовать параметры -h и -p. Соответствие хоста и порта:

pg_dump -U postgres -d db12 > backup.sql
Создание бэкапа
Скриншот №3 — Создание бэкапа

Также для выполнения этой задачи мы можем использовать последовательности команд:

ssh user@hostname -p 5432  pg_dump -U postgres -d db12 > backup.sql

Замените имя пользователя, имя хоста и порт на желаемую конфигурацию. Если требуется быстрое резервное копирование и восстановление БД между несколькими серверами, то используйте эту команду:

pg_dump -h 78.43.11.2 db_name | psql -h 72.43.11.2 db_name

Первая часть позволила подключиться к серверу с БД и с помощью pipe перенаправить вывод на целевой сервер с помощью команды после знака разделения.

А с помощью команды scp можно передать базу данных:

scp ./backup.sql root@94.141.98.9:/
Передача файла
Скриншот №4 — Передача файла

Необходимо создать базу данных и восстановить содержимое командой, приведенной ниже:

CREATE DATABASE db12;

Затем восстановите с помощью команды psql:

psql -U postgres -d db12 < backup.sql
Восстановление
Скриншот №5 — Восстановление

Убедитесь в целостности содержимого БД:

SELECT * FROM customers;
Проверим целостность данных
Скриншот №6 — Проверим целостность данных

Если база данных имеет большой объем и размер, то для переноса фрагментов данных используйте утилиты split и zip:

pg_dump name_db | gzip > name_archive.gz
gunzip -c name_archive.gz | psql name_db

И разбить на части с помощью синтаксиса ниже:

pg_dump name_db | split -b 4G - name_file
cat name_file | psql name_db

Это позволяет более эффективно передавать данные в процессе резервного копирования.

Вывод

Следуя этим рекомендациям и используя команды и утилиты, можно эффективно и качественно управлять резервным копированием и восстановлением данных в PostgreSQL, обеспечивая тем самым устойчивость и надежность современной информационной системы перед лицом потенциальных вызовов и угроз.

Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300

Вам также может быть интересно...