---
title: 'pgBackRest'
sidebar_label: 'pgBackRest'
sidebar_position: 12
description: 'Как настроить pgBackRest и работать с S3'
---

import PlusIcon from '@selectel/docux/icons/plus'
import Formbricks from '@theme/MDXComponents/Formbricks'
import GrantAccess from '@site/docs/_partials/s3/grant-access.mdx'

# pgBackRest

pgBackRest — инструмент для резервного копирования PostgreSQL с поддержкой S3 для ОС Linux.

## Настроить pgBackRest \{#configure-pgbackrest}

1. [Настройте доступ к S3](#configure-s3-access).
2. [Настройте PostgreSQL для архивирования WAL](#configure-postgresql).
3. [Установите pgBackRest](#install-pgbackrest).
4. [Создайте конфигурацию и настройте бэкапирование](#create-configuration-and-configure-backup).

### 1. Настроить доступ к S3 \{#configure-s3-access}

<GrantAccess />

### 2. Настроить PostgreSQL для архивирования WAL \{#configure-postgresql}

1. Откройте CLI.

2. Откройте файл `postgresql.conf`:

   ```bash
   sudo nano /etc/postgresql/16/main/postgresql.conf
   ```

3. Установите значения параметров:

   ```bash
   wal_level = replica
   archive_mode = on
   archive_command = 'pgbackrest --stanza=main archive-push %p'
   max_wal_senders = 3
   ```

4. Удалите `#` перед каждым из перечисленных параметров и комментарии после них.

5. Чтобы выйти из текстового редактора nano с сохранением изменений, нажмите **Ctrl+Х** → **Y+Enter**.

6. Примените изменения:

   ```bash
   sudo systemctl restart postgresql
   ```

### 3. Установить pgBackRest \{#install-pgbackrest}

Установите pgBackRest:

```bash
sudo apt install -y pgbackrest
```

### 4. Создать конфигурацию и настроить бэкапирование \{#create-configuration-and-configure-backup}

1. Cоздайте каталог конфигураций:

   ```bash
   sudo mkdir -p /etc/pgbackrest
   ```

2. Откройте конфигурационный файл `/etc/pgbackrest.conf`:

   ```bash
   nano /etc/pgbackrest.conf
   ```

3. Заполните файл `/etc/pgbackrest.conf`:

   ```bash
   [main]
   pg1-path=/var/lib/postgresql/<postgresql_version>/main   

   [global]
   repo1-type=s3
   repo1-s3-endpoint=<s3_domain>
   repo1-s3-bucket=<bucket_name>
   repo1-s3-region=<pool>
   repo1-s3-key=<access_key>
   repo1-s3-key-secret=<secret_key>
   repo1-path=<path_to_repository>
   repo1-retention-full=<number_of_backups>
   log-level-console=info
   ```

   Укажите:

   * `<postgresql_version>` – каталог данных PostgreSQL;
   * `<s3_domain>` – [домен S3 API](/s3/manage/domains.mdx#s3-api-domains). Домен зависит от [пула](/infrastructure/locations.mdx#pool), в котором находится S3;
   * `<bucket_name>` – название бакета S3. У бакета должна быть vHosted-адресация;
   * `<pool>` – [пул](/infrastructure/locations.mdx#pool), в котором находится S3;
   * `<access_key>` – значение поля **Access key** из [S3-ключа](/s3/manage/manage-access.mdx#issue-s3-key);
   * `<secret_key>` – значение поля **Secret key** из S3-ключа;
   * `<path_to_repository>` – корень репозитория pgBackRest;
   * `<number_of_backups>` – количество одновременно хранящихся бэкапов.

4. Чтобы выйти из текстового редактора nano с сохранением изменений, нажмите **Ctrl+Х** → **Y+Enter**.

5. Сделайте владельцем конфигурации пользователя `postgres`:

   ```bash
   sudo chown -R postgres:postgres /var/lib/pgbackrest
   sudo chown postgres:postgres /etc/pgbackrest/pgbackrest.conf
   ```

6. Инициализируйте `stanza` – логическую единицу для pgBackRest, которая объединяет кластер и репозиторий:

   ```bash
   sudo -u postgres pgbackrest --stanza=main --log-level-console=info stanza-create
   sudo -u postgres pgbackrest --stanza=main --log-level-console=info check
   ```

   Здесь:

   * `stanza-create` — проверяет каталог данных и репозиторий, создает метаданные для бэкапа;
   * `check` — подтверждает корректность настройки.

## Работа с pgBackRest \{#work-with-pgbackrest}

### Создать полный бэкап \{#create-full-backup}

1. Откройте CLI.
2. Создайте полный бэкап:

   ```bash
   sudo -u postgres pgbackrest --stanza=main --type=full backup
   ```

### Создать инкрементальный бэкап \{#create-incremental-backup}

Для выполнения инкрементального бэкапа должен быть сделан хотя бы один [полный бэкап](#create-full-backup).

1. Откройте CLI.
2. Создайте инкрементальный бэкап:

   ```bash
   sudo -u postgres pgbackrest --stanza=main --type=incr --log-level-console=info backup
   ```

### Посмотреть информацию о сохраненных бэкапах \{#view-info-about-saved-backups}

1. Откройте CLI.
2. Посмотрите информацию о сохраненных бэкапах:

   ```bash
   sudo -u postgres pgbackrest --stanza=main info
   ```

### Восстановить кластер из бэкапа \{#restore-cluster-from-backup}

1. Откройте CLI.

2. Перед восстановлением кластера остановите работу PostgreSQL:

   ```bash
   sudo systemctl stop postgresql
   ```

3. Восстановите бэкап — автоматически выбирается последний созданный бэкап:

   ```bash
   sudo -u postgres pgbackrest --stanza=main restore
   ```

4. Запустите работу PostgreSQL:

   ```bash
   sudo systemctl start postgresql
   ```

5. Проверьте список кластеров:

   ```bash
   sudo pg_lsclusters
   ```

6. Проверьте список баз данных:

   ```bash
   sudo -u postgres psql -c "\l"
   ```

<Formbricks />
