diff --git a/merge/basic-merge.md b/merge/basic-merge.md new file mode 100644 index 0000000000000000000000000000000000000000..b2014a97d315778f30b007c98534e5d65c9c2c1e --- /dev/null +++ b/merge/basic-merge.md @@ -0,0 +1,117 @@ +# Слияние цепочек инкрементальных резервных копий + +В результате выполнения этого занятия вы научитесь преобразовывать цепочку из нескольких инкрементальных резервных копий в одну копию, содержащую все изменения + +## 1) Инициируйте новую директорию для хранения резервных копий + +```shell +pg_probackup3 init -B /home/pbdemo/backups_demo +``` +Будет создана директория по указанному пути. В директории будет создана структура поддиректорий: backups и wal. + + +## 2) Добавьте новый инстанс бэкапов + +```shell +pg_probackup3 add-instance -B /home/pbdemo/backups_demo --instance=merge_demo -h /tmp +``` +В директориях <указанный путь>/backups и <указанный путь>/wal будет создана новая директория с именем создаваемого инстанса (передается опцией --instance). +Кроме того, в директории <указанный путь>/backups/<имя инстанса> будет создан файл pg_probackup3.conf, в котором будут прописаны некоторые параметры соединения с постгресом. + + +## 3) Создайте полную резервную копию кластера + +```shell +pg_probackup3 backup -B /home/pbdemo/backups_demo --instance=merge_demo -b FULL --stream --backup-id=full +``` +Будет создан полный бэкап с именем, заданным опцией --backup-id. + +## 4) Создайте две инкрементальные резервные копии кластера + +```shell +pg_probackup3 backup -B /home/pbdemo/backups_demo --instance=merge_demo -b DELTA --stream --backup-id=1-delta +pg_probackup3 backup -B /home/pbdemo/backups_demo --instance=merge_demo -b DELTA --stream --backup-id=2-delta --parent-backup-id=1-delta +``` +Будут созданы два инкрементных бэкапа с именами, заданными опцией --backup-id. +Первый бэкап автоматически определит "родителя" - последний успешный созданный полный или инкрементальный бэкап, в данном случае - полный бэкап, созданный в п.3. +Для второго бэкапа "родитель" задан опцией --parent-backup-id. +Таким образом сформируется последовательная цепочка из полного и двух инкрементных бэкапов. + +## 5) Выведите список получившихся резервных копий + +```shell +pg_probackup3 show -B /home/pbdemo/backups_demo --instance=merge_demo +``` + +Таблица отображает информацию по всем трем созданным бэкапам. + +
+Пример вывода: + +``` +BACKUP INSTANCE 'merge_demo', version 3 +==================================================================================================================================== +Instance Version ID End time Mode WAL Mode TLI Duration Data WAL Zalg Zratio Start LSN Stop LSN Status +==================================================================================================================================== +merge_demo 17 full 2025-03-28 14:20:18+0300 FULL STREAM 1 219MB - none 1.00 0/1A000028 0/1A000160 OK +merge_demo 17 1-delta 2025-03-28 14:22:29+0300 DELTA STREAM 1 5085kB - none 1.00 0/1C000028 0/1C000160 OK +merge_demo 17 2-delta 2025-03-28 14:22:42+0300 DELTA STREAM 1 5087kB - none 1.00 0/1E000028 0/1E000160 OK +``` + +
+ + +## 6) Повторите п.5 используя формат вывода tree, в этом формате в удобном виде отображаются цепочки бэкапов, что может оказаться полезным при использовании ветвления + +```shell +pg_probackup3 show -B /home/pbdemo/backups_demo --instance=merge_demo --format=tree +``` + +
+Пример вывода: + +``` +BACKUP INSTANCE 'merge_demo', version 3 +└── full + └── 1-delta + └── 2-delta +``` + +
+ +## 7) Выполните слияние первой инкрементальной резервной копии + +```shell +pg_probackup3 merge -B /home/pbdemo/backups_demo --instance=merge_demo --backup-id=1-delta +``` +Будет произведено слияние бэкапов, начиная от указанного опцией --backup-id до полного бэкапа. +В данном случае слияние затронет только бэкапы 1-delta и full, для бэкапа 2-delta "родителем" теперь станет новый бэкап - результат слияния. +В качестве имени нового бэкапа будет сформировано значение TIMESTAMP. Если требуется назначить иное имя бэкапу - можно использовать ключ --target-backup-id. + +## 8) Выведите список получившихся резервных копиий ещё раз и проверьте, что инкрементальная резервная копия осталась одна + +```shell +pg_probackup3 show -B /home/pbdemo/backups_demo --instance=merge_demo +``` +Таблица отобразит новый полный бэкап и оставшийся неизмененным бэкап 2-delta. + +
+Пример вывода: + +``` +BACKUP INSTANCE 'merge_demo', version 3 +==================================================================================================================================================== +Instance Version ID End time Mode WAL Mode TLI Duration Data WAL Zalg Zratio Start LSN Stop LSN Status +==================================================================================================================================================== +merge_demo 17 2025-03-28-14-39-18-947 2025-03-28 14:39:19+0300 FULL STREAM 1 251MB - none 0.15 0/1A000028 0/1C000160 OK +merge_demo 17 2-delta 2025-03-28 14:22:42+0300 DELTA STREAM 1 5087kB - none 1.00 0/1E000028 0/1E000160 OK +``` + +
+ +## 9) Практическое задание +Используя примеры команд, приведенные выше: +- Создайте несколько инкрементальных копий +- Определяя родительский бэкап через опцию --parent-backup-id добейтесь ветвления цепочек инкрементов +- Выполните слияние одной из цепочек +- Просмотрите получившийся результат при помощи команды show