RE: Как создать инкрементный бэкап в PostgreSQL 17?

#30991
bot_avaOdin — Одинэсник
Участник

    Для создания инкрементного бэкапа в PostgreSQL 17, вам нужно выполнить несколько шагов. Ниже представлена подробная инструкция:

    ### Шаг 1: Включение WAL Summary в PostgreSQL

    1. **Войдите в psql под пользователем postgres:**

    bash
       sudo -u postgres psql
       

    2. **Включите summarize_wal:**

    sql
       ALTER SYSTEM SET summarize_wal = on;
       

    3. **Перезагрузите конфигурацию PostgreSQL:**

    sql
       SELECT pg_reload_conf();
       

    ### Шаг 2: Создание каталога для бэкапов

    1. **Создайте директорию для полного бэкапа и инкрементальных бэкапов:**

    bash
       sudo mkdir -p /backups/fullbackup
       sudo mkdir -p /backups/{incr_Monday,incr_Tuesday,incr_Wednesday,incr_Thursday,incr_Friday}
       

    2. **Установите правильные права:**

    bash
       sudo chown -R postgres:postgres /backups && sudo chmod -R 755 /backups
       

    ### Шаг 3: Создание полного бэкапа базы данных

    1. **Запустите полное резервное копирование:**

    bash
       sudo -u postgres pg_basebackup -D /backups/fullbackup
       

    ### Шаг 4: Создание инкрементальных бэкапов

    1. **Создайте инкрементальные бэкапы для каждого дня недели:**

    bash
       sudo -u postgres pg_basebackup --incremental=/backups/fullbackup/backup_manifest -D /backups/incr_Monday/
       sudo -u postgres pg_basebackup --incremental=/backups/incr_Monday/backup_manifest -D /backups/incr_Tuesday/
       sudo -u postgres pg_basebackup --incremental=/backups/incr_Tuesday/backup_manifest -D /backups/incr_Wednesday/
       sudo -u postgres pg_basebackup --incremental=/backups/incr_Wednesday/backup_manifest -D /backups/incr_Thursday/
       sudo -u postgres pg_basebackup --incremental=/backups/incr_Thursday/backup_manifest -D /backups/incr_Friday/
       

    ### Шаг 5: Объединение бэкапов

    1. **Создайте каталог для объединённого бэкапа:**

    bash
       sudo mkdir -p /combinebackup
       sudo chown -R postgres:postgres /combinebackup
       sudo chmod -R 755 /combinebackup
       

    2. **Объедините полный и инкрементальные бэкапы:**

    bash
       sudo -u postgres pg_combinebackup /backups/fullbackup/ /backups/incr_Monday/ /backups/incr_Tuesday/ /backups/incr_Wednesday/ -o /combinebackup
       

    ### Шаг 6: Проверка и восстановление из бэкапа

    1. **Остановите PostgreSQL перед восстановлением:**

    bash
       sudo systemctl stop postgres
       

    2. **Копируйте файлы из объединённого бэкапа в директорию PostgreSQL:**

    bash
       sudo cp -r /combinebackup/* /var/lib/postgresql/data/
       

    3. **Запустите PostgreSQL:**

    bash
       sudo systemctl start postgres
       

    ### Полезные ссылки

    — [Документация PostgreSQL по pg_basebackup](https://www.postgresql.org/docs/current/pgbasebackup.html)
    — [Информация о WAL и инкрементных бэкапах](https://www.postgresql.org/docs/current/continuous-archiving.html)

    Эта инструкция поможет вам создать инкрементный бэкап в PostgreSQL 17. Рекомендую ознакомиться с документацией для более глубокого понимания процесса.

    База знаний 1С