Агент резервного копирования Кибер Бэкап
Описание
В настоящее время сертификат совместимости Кибер Бэкап доступен только для мажорной версии 6 СУБД Pangolin.
В Кибер Бэкап механизм резервного копирования СУБД, включая восстановление на момент времени (Point-in-Time Recovery, PITR), реализован на базе стандартного протокола потоковой репликации. Резервные копии создаются через данный протокол с использованием физических слотов репликации, при этом поддержка потоковой репликации встроена непосредственно в специализированный агент Кибер Бэкап.
При необходимости также поддерживается традиционный для СУБД Pangolin подход к резервному копированию: создание полной файловой копии данных в сочетании с непрерывным архивированием WAL-файлов.
Стандартная функциональность агента Кибер Бэкап
Процесс резервного копирования с использованием агента Кибер Бэкап для СУБД организован по принципу, аналогичному созданию синхронной реплики в стандартной архитектуре СУБД Pangolin. Агент полностью поддерживает ключевые операторы протокола потоковой репликации.
Получение данных осуществляется через физический слот репликации, после чего агент выполняет необходимые операции — включая формирование WAL-файлов и передачу данных резервной копии.
Поддерживается создание как полной, так и инкрементальной копии базы данных. Все резервные данные, вместе с соответствующей метаинформацией, сохраняются на серверах хранения Кибер Бэкап.
Сценарии использования
В данном разделе приведены примеры выполнения полного и инкрементального резервного копирования, а также резервного копирования с включением WAL-файлов с использованием Кибер Бэкап.
Полное и инкрементальное резервное копирование
Подготовка к резервному копированию
Для выполнения прямого восстановления данных СУБД из резервной копии на стороне сервера-клиента требуется установленный агент Кибер Бэкап, включающий в себя следующие ключевые компоненты:

Для корректной работы агента не требуется установка дополнительных системных пакетов, таких как компилятор GCC или исходные коды ядра операционной системы.
Наличие компилятора требуется только в случае сборки модуля ядра SnapAPI, используемого для операций с блочными устройствами Linux.
-
Создание плана резервного копирования со стороны Кибер Бэкап:

-
Создание базы данных
cyber_test_dbи таблицыcyber_test_tbl:$ psql -c "CREATE DATABASE cyber_test_db"
CREATE DATABASE
$ psql -d cyber_test_db -c "CREATE TABLE cyber_test_tbl (time timestamp default now(), text text);"
CREATE TABLE -
Проверка состояния слотов репликации.
Перед первым запуском резервного копирования слот репликации отсутствует, так как ранее процесс не выполнялся:
$ psql -c "SELECT slot_name, slot_type, restart_lsn, temporary, active FROM pg_replication_slots;"
slot_name | slot_type | restart_lsn | temporary | active
-----------+-----------+-------------+-----------+--------
(0 rows)примечаниеПри создании полной резервной копии существующий слот репликации (если он присутствует) будет автоматически пересоздан с использованием команд
DROP_REPLICATION_SLOT/CREATE_REPLICATION_SLOT.
Создание базовой резервной копии
-
Создание записи
test00в таблицеcyber_test_tbl:$ psql -d cyber_test_db -c "INSERT INTO cyber_test_tbl (text) VALUES ('test00');"
INSERT 0 1Успешный результат – запись создана:
$ psql -d cyber_test_db -c "SELECT * FROM cyber_test_tbl;"
time | text
----------------------------+--------
2024-11-06 08:08:28.995095 | test00
(1 row)Снятие чек-суммы таблицы:
$ psql -d cyber_test_db -c "SELECT md5(array_to_string(array_agg(cyber_test_tbl::text), ';')) FROM cyber_test_tbl;"
md5
----------------------------------
449126f8de37271f24f4462ca072f75c
(1 row) -
Проверка текущего значения LSN (Log Sequence Number):
-
через протокол репликации:
$ psql "dbname=cyber_test_db replication=database" -c "IDENTIFY_SYSTEM;"
systemid | timeline | xlogpos | dbname
---------------------+----------+-----------+---------------
7434028127449026963 | 1 | 0/1C2C0A0 | cyber_test_db
(1 row) -
через функции СУБД Pangolin:
$ psql -c "SELECT pg_current_wal_lsn(), pg_current_wal_insert_lsn();"
pg_current_wal_lsn | pg_current_wal_insert_lsn
--------------------+---------------------------
0/1C2C0A0 | 0/1C2C0A0
(1 row)
-
-
Запуск процесса резервного копирования:
примечаниеПри отсутствии слота репликации система всегда инициирует создание полной резервной копии, независимо от выбранного типа плана (полного или инкрементального).
-
Проверка результатов выполнения резервного копирования:
-
завершение задания резервного копирования в web-консоли Кибер Бэкап:

-
наличие резервной копии в web-консоли Кибер Бэкап:

-
успешное создание слота репликации:
$ psql -c "SELECT slot_name,slot_type,restart_lsn,temporary,active from pg_replication_slots;"
slot_name | slot_type | restart_lsn | temporary | active
--------------------------------------------------+-----------+-------------+-----------+--------
cp_8bcrgpqlqs6vdybotq8reg_lx_n_jixtiittb0fivv_iq | physical | 0/2020000 | f | f
(1 row) -
текущие позиции LSN:
$ psql "dbname=cyber_test_db replication=database" -c "IDENTIFY_SYSTEM;"
systemid | timeline | xlogpos | dbname
---------------------+----------+-----------+---------------
7434028127449026963 | 1 | 0/3000070 | cyber_test_db
(1 row)
$ psql -c "select pg_current_wal_lsn(), pg_current_wal_insert_lsn();"
pg_current_wal_lsn | pg_current_wal_insert_lsn
--------------------+---------------------------
0/3000070 | 0/3000070
(1 row)
-
Создание первой инкрементальной резервной копии
-
Создание записи
test01в таблицеcyber_test_tbl:$ psql -d cyber_test_db -c "INSERT INTO cyber_test_tbl (text) VALUES ('test01');"
INSERT 0 1Успешный результат – запись создана:
$ psql -d cyber_test_db -c "SELECT * FROM cyber_test_tbl;"
time | text
----------------------------+--------
2024-11-06 08:08:28.995095 | test00
2024-11-06 08:13:32.064309 | test01
(1 row)Снятие чек-суммы таблицы:
$ psql -d cyber_test_db -c "SELECT md5(array_to_string(array_agg(cyber_test_tbl::text), ';')) FROM cyber_test_tbl;"
md5
----------------------------------
ebca67147d3d0a6e2500a55a4be19fdf
(1 row) -
Запуск процесса резервного копирования и проверка результата в web-консоли Кибер Бэкап:

-
Проверка результатов выполнения резервного копирования:
-
успешное создание слота репликации:
$ psql -c "SELECT slot_name,slot_type,restart_lsn,temporary,active from pg_replication_slots;"
slot_name | slot_type | restart_lsn | temporary | active
--------------------------------------------------+-----------+-------------+-----------+--------
cp_8bcrgpqlqs6vdybotq8reg_lx_n_jixtiittb0fivv_iq | physical | 0/30001A0 | f | f
(1 row) -
текущие позиции LSN:
$ psql "dbname=cyber_test_db replication=database" -c "IDENTIFY_SYSTEM;"
systemid | timeline | xlogpos | dbname
---------------------+----------+-----------+---------------
7434028127449026963 | 1 | 0/4000000 | cyber_test_db
(1 row)
$ psql -c "select pg_current_wal_lsn(), pg_current_wal_insert_lsn();"
pg_current_wal_lsn | pg_current_wal_insert_lsn
--------------------+---------------------------
0/4000000 | 0/4000028
(1 row)
-
Создание второй инкрементальной резервной копии
-
Создание записи
test02в таблицеcyber_test_tbl:$ psql -d cyber_test_db -c "INSERT INTO cyber_test_tbl (text) VALUES ('test02');"
INSERT 0 1Успешный результат – запись создана:
$ psql -d cyber_test_db -c "SELECT * FROM cyber_test_tbl;"
time | text
----------------------------+--------
2024-11-06 08:08:28.995095 | test00
2024-11-06 08:13:32.064309 | test01
2024-11-06 08:16:11.917502 | test02
(1 row)Снятие чек-суммы таблицы:
$ psql -d cyber_test_db -c "SELECT md5(array_to_string(array_agg(cyber_test_tbl::text), ';')) FROM cyber_test_tbl;"
md5
----------------------------------
b80c6e2803f3a0f327e893f2c9ebdaef
(1 row) -
Проверка текущего значения LSN (Log Sequence Number):
-
через протокол репликации:
$ psql "dbname=cyber_test_db replication=database" -c "IDENTIFY_SYSTEM;"
systemid | timeline | xlogpos | dbname
---------------------+----------+-----------+---------------
7434028127449026963 | 1 | 0/40000E0 | cyber_test_db -
через функции СУБД Pangolin:
$ psql -c "SELECT pg_current_wal_lsn(), pg_current_wal_insert_lsn();"
pg_current_wal_lsn | pg_current_wal_insert_lsn
--------------------+---------------------------
0/40000E0 | 0/40000E0
(1 row)
-
-
Запуск процесса резервного копирования и проверка результата в web-консоли Кибер Бэкап:

-
Проверка результатов выполнения резервного копирования:
-
успешное создание слота репликации:
$ psql -c "SELECT slot_name,slot_type,restart_lsn,temporary,active from pg_replication_slots;"
slot_name | slot_type | restart_lsn | temporary | active
--------------------------------------------------+-----------+-------------+-----------+--------
cp_8bcrgpqlqs6vdybotq8reg_lx_n_jixtiittb0fivv_iq | physical | 0/40000E0 | f | f
(1 row) -
текущие позиции LSN:
$ psql "dbname=cyber_test_db replication=database" -c "IDENTIFY_SYSTEM;"
systemid | timeline | xlogpos | dbname
---------------------+----------+-----------+---------------
7434028127449026963 | 1 | 0/5000000 | cyber_test_db
(1 row)
$ psql -c "select pg_current_wal_lsn(), pg_current_wal_insert_lsn();"
pg_current_wal_lsn | pg_current_wal_insert_lsn
--------------------+---------------------------
0/5000000 | 0/5000028
(1 row)
-
Восстановление из резервных копий
Восстановление базовой резервной копии test00
-
Восстановление (в режиме «как файлы») полной резервной копии
test00во временный каталог на исходный сервер-клиент через web-консоль Кибер Бэкап:
Успешный результат – резервная копия восстановлена:

-
Запуск восстановленной резервной копии
test00:$ pg_ctl -D /restore_dbms/test00 start
waiting for server to start....2024-11-06 08:48:15 MSK [1700547]: [1-1] app=,user=,db=,client=,type=postmaster LOG: License type is "Enterprise"
...
server started -
Проверка:
-
содержимого таблицы
cyber_test_tbl:$ psql -p 5400 -d cyber_test_db -c "SELECT * FROM cyber_test_tbl;"
time | text
----------------------------+--------
2024-11-06 08:08:28.995095 | test00
(1 row) -
контрольной суммы данных:
$ psql -p 5400 -d cyber_test_db -c "SELECT md5(array_to_string(array_agg (cyber_test_tbl::text), ';')) FROM cyber_test_tbl;"
md5
----------------------------------
449126f8de37271f24f4462ca072f75c
(1 row)
-
-
Сравнение чек-сумм до создания копии
test00и после восстановления:md5 hash До создания копии 449126f8de37271f24f4462ca072f75c После восстановления 449126f8de37271f24f4462ca072f75c Совпадение чек-сумм подтверждает, что данные восстанавливаются корректно и полностью соответствуют состоянию на момент создания резервной копии.
Восстановление инкрементальной резервной копии test01
-
Восстановление (в режиме «как файлы») инкрементальной резервной копии
test01во временный каталог на исходный сервер-клиент через web-консоль Кибер Бэкап. -
Запуск восстановленной резервной копии
test01:$ pg_ctl -D /restore_dbms/test01 start
waiting for server to start....2024-11-06 09:11:45 MSK [1700621]: [1-1] app=,user=,db=,client=,type=postmaster LOG: License type is "Enterprise"
...
server started -
Проверка:
-
содержимого таблицы
cyber_test_tbl:$ psql -p 5401 -d cyber_test_db -c "SELECT * FROM cyber_test_tbl;"
time | text
----------------------------+--------
2024-11-06 08:08:28.995095 | test00
2024-11-06 08:13:32.064309 | test01
(2 rows) -
контрольной суммы данных:
$ psql -p 5401 -d cyber_test_db -c "SELECT md5(array_to_string(array_agg (cyber_test_tbl::text), ';')) FROM cyber_test_tbl;"
md5
----------------------------------
ebca67147d3d0a6e2500a55a4be19fdf
(1 row)
-
-
Сравнение чек-сумм до создания копии
test01и после восстановления:md5 hash До создания копии ebca67147d3d0a6e2500a55a4be19fdf После восстановления ebca67147d3d0a6e2500a55a4be19fdf Совпадение чек-сумм подтверждает, что данные восстанавливаются корректно и полностью соответствуют состоянию на момент создания резервной копии.
Восстановление инкрементальной резервной копии test02
-
Восстановление (в режиме «как файлы») инкрементальной резервной копии
test02во временный каталог на исходный сервер-клиент через web-консоль Кибер Бэкап. -
Запуск восстановленной резервной копии
test02:$ pg_ctl -D /restore_dbms/test02 start
waiting for server to start....2024-11-06 09:21:29 MSK [1700649]: [1-1] app=,user=,db=,client=,type=postmaster LOG: License type is "Enterprise"
...
server started -
Проверка:
-
содержимого таблицы
cyber_test_tbl:$ psql -p 5402 -d cyber_test_db -c "SELECT * FROM cyber_test_tbl;"
time | text
----------------------------+--------
2024-11-06 08:08:28.995095 | test00
2024-11-06 08:13:32.064309 | test01
2024-11-06 08:16:11.917502 | test02
(3 rows) -
контрольной суммы данных:
$ psql -p 5402 -d cyber_test_db -c "SELECT md5(array_to_string(array_agg(cyber_test_tbl::text), ';')) FROM cyber_test_tbl;"
md5
----------------------------------
b80c6e2803f3a0f327e893f2c9ebdaef
(1 row)
-
-
Сравнение чек-сумм до создания копии
test02и после восстановления:md5 hash До создания копии b80c6e2803f3a0f327e893f2c9ebdaef После восстановления b80c6e2803f3a0f327e893f2c9ebdaef Совпадение чек-сумм подтверждает, что данные восстанавливаются корректно и полностью соответствуют состоянию на момент создания резервной копии.
Резервное копирование с WAL-архивами
В СУБД Pangolin предусмотрена возможность использования расширения pgse_backup.
Для этого на сервере с установленной СУБД Pangolin должны быть доступны:
- пакет
pangolin-backup-tools; - расширение
pgse_backup.
Применение pangolin-backup-tools не является обязательным, но оно обеспечивает более удобный контроль за процессом архивации WAL-файлов — через представление backup.wal_history можно отслеживать состояние копий файлов журнала транзакций.
Использование pangolin-backup-tools позволяет не хранить WAL-архивы локально, а после успешного завершения резервного копирования такие архивы автоматически удалять.
Создание копий архивов WAL-файлов можно выполнять отдельной файловой политикой Кибер Бэкап, или сразу архивировать WAL-файлы на сетевое хранилище напрямую подключенное к серверу с СУБД.
Ниже будет рассмотрен вариант создания файловой копии WAL-файлов отдельной политикой Кибер Бэкап совместно с использованием pangolin-backup-tools.
Создание полной копии и копии с WAL-архивами для возможности восстановления на точку во времени (PITR)
Подготовка
-
Подготовка каталога для архивирования WAL-файлов через
pg_probackup:$ pg_probackup init -B /pgarclogs/0{base_version}
INFO: Backup catalog '/pgarclogs/0{base_version}' successfully inited
$ pg_probackup add-instance -B /pgarclogs/0{base_version} -D $PGDATA --instance clustername
INFO: Instance 'clustername' successfully inited -
Включение параметров
archive_modeиarchive_commandв$PGDATA/postgresql.conf:archive_mode = 'on'
archive_command = '/usr/pangolin-dbms-client-{product_version}/bin/pg_probackup archive-push -B /pgarclogs/0{base_version} --instance clustername --wal-file-path=%p --wal-file-name=%f --compress --overwrite -j 4 --batch-size=100'После включения параметра
archive_modeWAL-файлы, которые заполнены и больше не требуются СУБД для текущей работы сервера, будут архивироваться и перекладываться в «Backup catalog» созданный черезpg_probackup:INFO: pg_probackup archive-push WAL file: 000000010000000000000001, threads: 1/4, batch: 1/100, compression: zlib
INFO: pg_probackup archive-push completed successfully, pushed: 1, skipped: 0, time elapsed: 125ms -
Добавление
pre/postкоманд в план резервного копирования WAL-архивов для корректного заполнения представленияbackup.wal_historyо статусе резервного копирования:
Пример команд:
# Pre cmd
SESSIONID="$(acrocmd list activities --output=raw --limit=2 | grep "Backup plan" | grep -Eo '[0-9A-F]{8}-([0-9A-F]{4}-)[0-9A-F] {12}')" /opt/pangolin-backup-tools/bin/pangolin_archlogs.sh -o start
# Post cmd
SESSIONID="$(acrocmd list activities --output=raw --limit=2 | grep "Backup plan" | grep -Eo '[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F] {12}')" SMEXIT=0 /opt/pangolin-backup-tools/bin/pangolin_archlogs.sh -o stopпримечаниеЗапуск post-команды
pangolin_archlogs.sh -o stopудаляет локально хранящиеся на клиенте WAL-архивы после успешного завершения создания резервной копии Кибер Бэкап. -
Установка расширения
pgse_backup:$ psql -c "CREATE extension pgse_backup;"
CREATE EXTENSION -
Проверка доступности представления
backup.wal_history:$ psql -c "SELECT * FROM backup.wal_history;"
session_id | state | start_time | stop_time | duration | info
------------+-------+------------+-----------+----------+------
(0 rows) -
Создание планов резервного копирования со стороны Кибер Бэкап:
- для СУБД:

- для WAL-архивов:

-
Создание базы данных
cyber_test_wal_dbи таблицыcyber_test_wal_tbl:$ psql -c "CREATE DATABASE cyber_test_wal_db"
CREATE DATABASE
$ psql -d cyber_test_wal_db -c "CREATE TABLE cyber_test_wal_tbl (time timestamp default now(), text text);"
CREATE TABLE -
Запуск плана полного резервного копирования СУБД:

Создание первой резервной копии WAL-архивов
-
Создание записи
wal-test00в таблице:$ psql -d cyber_test_wal_db -c "INSERT INTO cyber_test_wal_tbl (text) VALUES ('wal-test00');"
INSERT 0 1Успешный результат – запись создана:
$ psql -d cyber_test_wal_db -c "SELECT * FROM cyber_test_wal_tbl;"
time | text
----------------------------+------------
2024-11-06 14:18:35.662661 | wal-test00
(1 row)Снятие чек-суммы таблицы:
$ psql -d cyber_test_wal_db -c "SELECT md5(array_to_string(array_agg(cyber_test_wal_tbl::text), ';')) FROM cyber_test_wal_tbl;"
md5
----------------------------------
e716f9ca4127dae0c1adb3283040512b
(1 row) -
Эмуляция архивирования WAL-файлов:
$ psql -c "SELECT pg_switch_wal();"
pg_switch_wal
---------------
0/3059CC2
(1 row) -
Запуск плана резервного копирования WAL-архивов.
-
Проверка статуса создания резервной копии WAL-архивов:
-
в web-консоли Кибер Бэкап:

-
через представление
backup.wal_history:$ psql -c "SELECT * FROM backup.wal_history;"
session_id | state | start_time | stop_time | duration | info
-------------------------------------+-----------+------------------------+------------------------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
D9BEA212-EF0D-4FA9-BB44-1B79F94EF9FE | completed | 2024-11-06 14:23:56+03 | 2024-11-06 14:24:05+03 | 00:00:09 | {"1": {"parent_tli": 0, "switchpoint": "0/0", "min_segno": "000000010000000000000003", "max_segno": "000000010000000000000003", "n_segments": 1, "size": 165122, "zratio": 101.6, "status": "ok", "lost_segments": []}}
(1 row)
-
Создание второй резервной копии WAL-архивов
-
Создание записи
wal-test01в таблице:$ psql -d cyber_test_wal_db -c "INSERT INTO cyber_test_wal_tbl (text) VALUES ('wal-test01');"
INSERT 0 1Успешный результат – запись создана:
$ psql -d cyber_test_wal_db -c "SELECT * FROM cyber_test_wal_tbl;"
time | text
----------------------------+------------
2024-11-06 14:18:35.662661 | wal-test00
2024-11-06 14:29:37.044631 | wal-test01
(2 rows)Снятие чек-суммы таблицы:
$ psql -d cyber_test_wal_db -c "SELECT md5(array_to_string(array_agg(cyber_test_wal_tbl::text), ';')) FROM cyber_test_wal_tbl;"
md5
----------------------------------
4eabf25a7f941e667232997e7ebd74c1
(1 row) -
Эмуляция архивирования WAL-файлов:
$ psql -c "SELECT pg_switch_wal();"
pg_switch_wal
---------------
0/400014A
(1 row) -
Запуск плана резервного копирования WAL-архивов.
-
Проверка статуса создания резервной копии WAL-архивов:
-
в web-консоли Кибер Бэкап;
-
через представление
backup.wal_history:$ psql -c "SELECT * FROM backup.wal_history;"
session_id | state | start_time | stop_time | duration | info
-------------------------------------+-----------+------------------------+------------------------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
D9BEA212-EF0D-4FA9-BB44-1B79F94EF9FE | completed | 2024-11-06 14:23:56+03 | 2024-11-06 14:24:05+03 | 00:00:09 | {"1": {"parent_tli": 0, "switchpoint": "0/0", "min_segno": "000000010000000000000003", "max_segno": "000000010000000000000003", "n_segments": 1, "size": 165122, "zratio": 101.6, "status": "ok", "lost_segments": []}}
B51186EE-5BA5-4984-BD8B-4DF6B3A79F91 | completed | 2024-11-06 14:31:21+03 | 2024-11-06 14:31:29+03 | 00:00:08 | {"1": {"parent_tli": 0, "switchpoint": "0/0", "min_segno": "000000010000000000000004", "max_segno": "000000010000000000000004", "n_segments": 1, "size": 73456, "zratio": 228.4, "status": "ok", "lost_segments": []}}
(2 rows)
-
Создание третьей резервной копии WAL-архивов
-
Создание записи
wal-test02в таблице:$ psql -d cyber_test_wal_db -c "INSERT INTO cyber_test_wal_tbl (text) VALUES ('wal-test02');"
INSERT 0 1Успешный результат – запись создана:
$ psql -d cyber_test_wal_db -c "SELECT * FROM cyber_test_wal_tbl;"
time | text
----------------------------+------------
2024-11-06 14:18:35.662661 | wal-test00
2024-11-06 14:29:37.044631 | wal-test01
2024-11-06 14:34:49.035367 | wal-test02
(3 rows)Снятие чек-суммы таблицы:
$ psql -d cyber_test_wal_db -c "SELECT md5(array_to_string(array_agg(cyber_test_wal_tbl::text), ';')) FROM cyber_test_wal_tbl;"
md5
----------------------------------
20e826c14e4db9c1c94db1f677dcd34d
(1 row) -
Эмуляция архивирования WAL-файлов:
$ psql -c "SELECT pg_switch_wal();"
pg_switch_wal
---------------
0/500014A
(1 row) -
Запуск плана резервного копирования WAL-архивов.
-
Проверка статуса создания резервной копии WAL-архивов:
-
в web-консоли Кибер Бэкап;
-
через представление
backup.wal_history:$ psql -c "SELECT * FROM backup.wal_history;"
session_id | state | start_time | stop_time | duration | info
-------------------------------------+-----------+------------------------+------------------------+----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
D9BEA212-EF0D-4FA9-BB44-1B79F94EF9FE | completed | 2024-11-06 14:23:56+03 | 2024-11-06 14:24:05+03 | 00:00:09 | {"1": {"parent_tli": 0, "switchpoint": "0/0", "min_segno": "000000010000000000000003", "max_segno": "000000010000000000000003", "n_segments": 1, "size": 165122, "zratio": 101.6, "status": "ok", "lost_segments": []}}
B51186EE-5BA5-4984-BD8B-4DF6B3A79F91 | completed | 2024-11-06 14:31:21+03 | 2024-11-06 14:31:29+03 | 00:00:08 | {"1": {"parent_tli": 0, "switchpoint": "0/0", "min_segno": "000000010000000000000004", "max_segno": "000000010000000000000004", "n_segments": 1, "size": 73456, "zratio": 228.4, "status": "ok", "lost_segments": []}}
2DB1D24D-85AE-4719-8993-802B68CF6606 | completed | 2024-11-06 14:37:05+03 | 2024-11-06 14:37:13+03 | 00:00:08 | {"1": {"parent_tli": 0, "switchpoint": "0/0", "min_segno": "000000010000000000000005", "max_segno": "000000010000000000000005", "n_segments": 1, "size": 73451, "zratio": 228.41, "status": "ok", "lost_segments": []}}
(3 rows)
-
Восстановление из резервной копии через restore_command
Восстановление полной резервной копии пустой базы данных
-
Восстановление (в режиме «как файлы») полной резервной копии
wal-test00во временный каталог на исходный сервер-клиент через web-консоль Кибер Бэкап:
-
Восстановление (в режиме «как файлы») каждой копии WAL-архивов в один и тот же временный каталог на сервер-клиент через web-консоль Кибер Бэкап:

Восстановление базы данных на момент копии wal-test00
-
Настройка
restore_commandвpostgresql.confдля восстановленной полной копииwal-test00:restore_command = 'gunzip < /restore_dbms/wal-test/%f.gz > %p'
recovery_target_time = '2024-11-6 14:19 Europe/Moscow' -
Запуск восстановления резервной копии до
wal-test00:### Включить режим 'recovery'
$ touch full/recovery.signal
$ pg_ctl -D /restore_dbms/full start
waiting for server to start....2024-11-06 15:45:07 MSK [1706156]: [1-1] app=,user=,db=,client=, type=postmaster LOG: License type is "Enterprise"
...
server started -
Проверка:
-
содержимого таблицы
cyber_test_wal_db:$ psql -d cyber_test_wal_db -c "SELECT * FROM cyber_test_wal_tbl;"
time | text
----------------------------+------------
2024-11-06 14:18:35.662661 | wal-test00
(1 row) -
контрольной суммы данных:
$ psql -d cyber_test_wal_db -c "SELECT md5(array_to_string(array_agg(cyber_test_wal_tbl::text), ';')) FROM cyber_test_wal_tbl;"
md5
----------------------------------
e716f9ca4127dae0c1adb3283040512b
(1 row)
-
-
Сравнение чек-сумм до создания копии
wal-test00и после восстановления:md5 hash До создания копии e716f9ca4127dae0c1adb3283040512b После восстановления e716f9ca4127dae0c1adb3283040512b Совпадение чек-сумм подтверждает, что данные восстанавливаются корректно и полностью соответствуют состоянию на момент времени
wal-test00.
Восстановление базы данных на момент копии wal-test01
-
Настройка
restore_commandвpostgresql.confдля восстановленной полной копииwal-test01:restore_command = 'gunzip < /restore_dbms/wal-test/%f.gz > %p'
recovery_target_time = '2024-11-6 14:30 Europe/Moscow' -
Запуск восстановления резервной копии до
wal-test01:### Включить режим 'recovery'
$ touch full/recovery.signal
$ pg_ctl -D /restore_dbms/full start
waiting for server to start....2024-11-06 15:49:07 MSK [1706189]: [1-1] app=,user=,db=,client=,type=postmaster LOG: License type is "Enterprise"
...
server started -
Проверка:
-
содержимого таблицы
cyber_test_wal_db:$ psql -d cyber_test_wal_db -c "SELECT * FROM cyber_test_wal_tbl;"
time | text
----------------------------+------------
2024-11-06 14:18:35.662661 | wal-test00
2024-11-06 14:29:37.044631 | wal-test01
(2 rows) -
контрольной суммы данных:
$ psql -d cyber_test_wal_db -c "SELECT md5(array_to_string(array_agg(cyber_test_wal_tbl::text), ';')) FROM cyber_test_wal_tbl;"
md5
----------------------------------
4eabf25a7f941e667232997e7ebd74c1
(1 row)
-
-
Сравнение чек-сумм до создания копии
wal-test01и после восстановления:md5 hash До создания копии 4eabf25a7f941e667232997e7ebd74c1 После восстановления 4eabf25a7f941e667232997e7ebd74c1 Совпадение чек-сумм подтверждает, что данные восстанавливаются корректно и полностью соответствуют состоянию на момент времени
wal-test01.
Восстановление базы данных на момент копии wal-test02
-
Настройка
restore_commandвpostgresql.confдля восстановленной полной копииwal-test02:restore_command = 'gunzip < /restore_dbms/wal-test/%f.gz > %p'
recovery_target_time = '2024-11-6 14:34 Europe/Moscow' -
Запуск восстановления резервной копии до
wal-test02:### Включить режим 'recovery'
$ touch full/recovery.signal
$ pg_ctl -D /restore_dbms/full start
waiting for server to start....2024-11-06 15:51:46 MSK [1706223]: [1-1] app=,user=,db=,client=,type=postmaster LOG: License type is "Enterprise"
...
server started -
Проверка:
-
содержимого таблицы
cyber_test_wal_db:$ psql -d cyber_test_wal_db -c "SELECT * FROM cyber_test_wal_tbl;"
time | text
----------------------------+------------
2024-11-06 14:18:35.662661 | wal-test00
2024-11-06 14:29:37.044631 | wal-test01
2024-11-06 14:34:49.035367 | wal-test02
(3 rows) -
контрольной суммы данных:
$ psql -d cyber_test_wal_db -c "SELECT md5(array_to_string(array_agg(cyber_test_wal_tbl::text), ';')) FROM cyber_test_wal_tbl;"
md5
----------------------------------
20e826c14e4db9c1c94db1f677dcd34d
(1 row)
-
-
Сравнение чек-сумм до создания копии
wal-test02и после восстановления:md5 hash До создания копии 20e826c14e4db9c1c94db1f677dcd34d После восстановления 20e826c14e4db9c1c94db1f677dcd34d Совпадение чек-сумм подтверждает, что данные восстанавливаются корректно и полностью соответствуют состоянию на момент времени
wal-test02.