# Занятие 00: Резервное копирование и репликация / PostgreSQL 16

> Исходная страница в нативном Markdown: Резервное копирование и репликация / PostgreSQL 16

---

Индекс LLMS: [llms.txt](/ru/llms.txt)

---

<!-- Generated by scripts/generate_skeleton.py. -->

> [!NOTE]
> Эта страница извлечена из официального PDF в нативный Markdown. Текст слайдов, код и комментарии сохранены в порядке чтения; исходные PDF и HTML остаются эталоном макета.
> **HTML source:** [dba3_00_introduction.html](https://edu.postgrespro.ru/16/dba3-16/dba3_00_introduction.html)
> **Archive:** [DBA3-handouts-16.zip](https://edu.postgrespro.ru/16/DBA3-handouts-16.zip)
> **Страниц PDF:** 10

## Page 1: Резервное копирование и репликация / PostgreSQL 16 {#source-page-001}

### Авторские права

© Postgres Professional, 2017–2025 Авторы: Егор Рогов, Павел Лузанов, Илья Баштанов, Алексей Береснев Фото: Олег Бартунов (монастырь Пху и пик Бхрикути, Непал)
### Использование материалов курса

Некоммерческое использование материалов курса (презентации, демонстрации) разрешается без ограничений. Коммерческое использование возможно только с письменного разрешения компании Postgres Professional. Запрещается внесение изменений в материалы курса.
### Обратная связь

Отзывы, замечания и предложения направляйте по адресу: edu@postgrespro.ru
### Отказ от ответственности

Компания Postgres Professional не несет никакой ответственности за любые повреждения и убытки, включая потерю дохода, нанесенные прямым или непрямым, специальным или случайным использованием материалов курса. Компания Postgres Professional не предоставляет каких-либо гарантий на материалы курса. Материалы курса предоставляются на основе принципа «как есть» и компания Postgres Professional не обязана предоставлять сопровождение, поддержку, обновления, расширения и изменения.

## Page 2: Администраторам {#source-page-002}

![Source slide page 2: Администраторам](images/page-002.png){#source-figure-002 caption="Source slide page 2: Администраторам"}

  - DBA2, 4 дня

### Комментарии преподавателя

Для прохождения всех курсов необходимо знание основ языка SQL. Курса по SQL в нашей линейке нет, но имеется множество книг и образовательных ресурсов для освоения SQL. Мы рекомендуем книгу Евгения Моргунова «PostgreSQL. Основы языка SQL»:

<https://postgrespro.ru/education/books/sqlprimer>

Для администраторов мы предлагаем следующие курсы.

Курс DBA1 – базовый, он дает сведения об архитектуре PostgreSQL, об установке, настройке и управлении сервером. Приводятся обзоры разграничения доступа, резервного копирования и репликации.

В курсе DBA2 обсуждается настройка конфигурационных параметров исходя из понимания внутренней организации сервера; говорится о мониторинге сервера с использованием обратной связи для итеративной настройки параметров.

Курс DBA3 посвящен рассмотрению резервного копирования, а также настройкам физической и логической репликации и сценариям ее использования. Также дается общее представление о способах и сложностях построения высокодоступных, масштабируемых кластеров.

Курс DBS рассказывает про настройку подключений клиентов к СУБД и про управление доступом внутри самой СУБД.

В курсе QPT разбираются планирование и выполнение запросов, настройка параметров экземпляра, связанных с производительностью, и изучается поиск проблемных запросов и их оптимизация.

В курсе PGPRO рассматриваются дополнительные возможности, которые предоставляет СУБД Postgres Pro Enterprise.

## Page 3: Разработчикам {#source-page-003}

![Source slide page 3: Разработчикам](images/page-003.png){#source-figure-003 caption="Source slide page 3: Разработчикам"}

  - DEV2, 4 дня

### Комментарии преподавателя

Для разработчиков серверной части приложений мы предлагаем следующие курсы.

Базовым курсом для разработчиков является курс DEV1, в котором даются общие сведения об архитектуре PostgreSQL и использовании основных объектов базы данных; изучается программирование на стороне сервера на языках SQL и PL/pgSQL с использованием основных типов данных (включая составной тип и массивы), а также рассматривается взаимодействие с клиентской частью.

В курсе DEV2 рассматриваются особенности внутреннего устройства сервера, влияющие на разработку прикладного кода, и всесторонне изучается расширяемость: возможность дополнить серверные механизмы собственным кодом, что позволяет использовать PostgreSQL для решения самых разнообразных задач.

Курсы DBS, QPT и PGPRO являются общими для разработчиков и администраторов.

Разработчикам могут быть интересны и курсы по администрированию, если есть необходимость детальнее изучить внутреннее устройство PostgreSQL, а также в случае, когда на проекте нет выделенной роли администратора.

<https://postgrespro.ru/education/courses>

## Page 4: О курсе DBA3 {#source-page-004}

**Продолжительность: 2 дня**
- Предварительные знания
  - основы SQL
  - владение ОС Unix
  - знакомство с архитектурой PostgreSQL в объеме курса DBA1
- Какие навыки будут получены
  - выполнение резервного копирования различными способами
  - настройка сервера для физической и логической репликации
  - знакомство со сценариями использования репликации
  - представление о способах построения кластеров

### Комментарии преподавателя

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

## Page 5: Используемые материалы {#source-page-005}

**Подготовленная виртуальная машина**
  - ОС Xubuntu 24.04
  - PostgreSQL 16 (три кластера)
  - документация на русском языке
- Учебные материалы
  - презентации, демонстрации, практические задания и их решение
  - (в форматах html и pdf)

### Комментарии преподавателя

Если вы проходите курс самостоятельно, обязательно начните со знакомства с Руководством слушателя. В числе прочего в нем написано, где скачать и как использовать виртуальную машину курса и прочие материалы. Все материалы курса, включая Руководство слушателя, доступны по адресу: <https://postgrespro.ru/education/courses/DBA3>

Выполнение практических заданий очень важно для получения навыков работы с PostgreSQL. Обязательно старайтесь сначала самостоятельно выполнить задания, а затем просмотрите предлагаемые нами решения, даже если задание не вызвало вопросов. В решениях могут содержаться дополнительные сведения, которые не упоминаются в презентациях и демонстрациях. После выполнения задания следует удалить созданные объекты и сбросить измененные настройки, иначе они могут помешать выполнению последующих заданий.

Учебные материалы (презентации, демонстрации, практические задания и их решения) доступны в двух форматах. Формат html удобен для онлайн-работы, он позволяет копировать фрагменты текста и кода. Формат pdf разбит на страницы и удобен для печати.

## Page 6: Предварительные настройки {#source-page-006}

В этом курсе мы будем использовать три экземпляра PostgreSQL, названные alpha, beta и gamma:
```sh
student$ sudo pg_ctlcluster 16 alpha start
```
```sh
student$ sudo pg_ctlcluster 16 beta start
```
```sh
student$ sudo pg_ctlcluster 16 gamma start
```
В демонстрациях команды, выполняемые на каждом из серверов, выделены и отличаются приглашением.
Все практические задания выполняются под пользователем ОС student. В СУБД создан одноименный пользователь и база данных, чтобы psql можно было запускать без параметров.
Сервер alpha работает на стандартном порту 5432:
```sh
student$ psql
```
```text
α=> SHOW server_version;
```
```text
           server_version
------------------------------------
 16.11 (Ubuntu 16.11-1.pgdg24.04+1)
(1 row)
```
Сервер beta — на порту 5433. Для подключения в psql достаточно указать только номер порта:
```sh
student$ psql -p 5433
```
```text
β=> SHOW server_version;
```
```text
           server_version
------------------------------------
 16.11 (Ubuntu 16.11-1.pgdg24.04+1)
(1 row)
```
Сервер gamma — на порту 5434:
```sh
student$ psql -p 5434
```
```text
γ=> SHOW server_version;
```
```text
           server_version
------------------------------------
 16.11 (Ubuntu 16.11-1.pgdg24.04+1)
(1 row)
```
Роль student не является суперпользовательской, но обладает правом создания баз данных и ролей и разрешением на подключение по протоколу репликации, а также включена в некоторые предопределенные групповые роли:
```text
α=> \du student
```
```sql
                  List of roles
 Role name |             Attributes
-----------+-------------------------------------
 student   | Create role, Create DB, Replication
```
```text
α=> \drg student
```
```text
                     List of role grants
 Role name |       Member of        |   Options    | Grantor
-----------+------------------------+--------------+----------
 student   | pg_checkpoint          | INHERIT, SET | postgres
 student   | pg_create_subscription | INHERIT, SET | postgres
 student   | pg_monitor             | INHERIT, SET | postgres
 student   | pg_read_server_files   | INHERIT, SET | postgres
 student   | pg_write_server_files  | INHERIT, SET | postgres
(5 rows)
```
Также student имеет привилегии на некоторые объекты, которыми по умолчанию обладает только суперпользователь. Это право изменять параметры:

## Page 7: Page 7 {#source-page-007}

```sql
α=> SELECT parname, (acl).privilege_type
FROM (
```
```sql
  SELECT parname, aclexplode(paracl) acl
  FROM pg_parameter_acl
)
WHERE (acl).grantee = user::regrole;
```
```sql
           parname            | privilege_type
------------------------------+----------------
 archive_command              | ALTER SYSTEM
 archive_mode                 | ALTER SYSTEM
 archive_timeout              | ALTER SYSTEM
 checkpoint_timeout           | ALTER SYSTEM
 hot_standby_feedback         | ALTER SYSTEM
 listen_addresses             | ALTER SYSTEM
 log_recovery_conflict_waits  | ALTER SYSTEM
 max_connections              | ALTER SYSTEM
 max_slot_wal_keep_size       | ALTER SYSTEM
 max_standby_streaming_delay  | ALTER SYSTEM
 max_wal_size                 | ALTER SYSTEM
 min_wal_size                 | ALTER SYSTEM
 restore_command              | ALTER SYSTEM
 synchronous_commit           | ALTER SYSTEM
 synchronous_standby_names    | ALTER SYSTEM
 wal_keep_size                | ALTER SYSTEM
 wal_level                    | ALTER SYSTEM
 wal_receiver_status_interval | ALTER SYSTEM
(18 rows)
```
И право выполнять системные функции (оно выдано в базе template1 и, следовательно, во всех базах, созданных командой CREATE DATABASE без указания шаблона):
```sql
α=> SELECT proname, (acl).privilege_type
FROM (
  SELECT proname, aclexplode(proacl) acl
  FROM pg_proc
)
WHERE (acl).grantee = user::regrole;
```
```text
            proname             | privilege_type
--------------------------------+----------------
 pg_hba_file_rules              | EXECUTE
 pg_read_binary_file            | EXECUTE
 pg_stat_file                   | EXECUTE
 pg_stat_reset_replication_slot | EXECUTE
 pg_log_standby_snapshot        | EXECUTE
 pg_switch_wal                  | EXECUTE
 pg_wal_replay_resume           | EXECUTE
 pg_ls_dir                      | EXECUTE
 pg_read_binary_file            | EXECUTE
(9 rows)
```
Локальные подключения любых пользователей разрешены без ввода пароля:
```sql
α=> \c - postgres
```
```text
You are now connected to database "student" as user "postgres".
```
```sql
α=> SELECT type, database, user_name, auth_method FROM pg_hba_file_rules();
```
```text
 type  |   database    | user_name |  auth_method
-------+---------------+-----------+---------------
 local | {all}         | {all}     | trust
 host  | {all}         | {all}     | scram-sha-256
 host  | {all}         | {all}     | scram-sha-256
 local | {replication} | {all}     | trust
 host  | {replication} | {all}     | scram-sha-256
 host  | {replication} | {all}     | scram-sha-256
(6 rows)
```

## Page 8: Организационные вопросы {#source-page-008}

**День: ~8 академических часов + обед (1час)**
- Каждая тема, как правило, состоит из
  - презентации и демонстрации: ~40–70 мин
  - практических заданий: ~30–40 мин, включая перерыв

## Page 9: День 1 {#source-page-009}

**Резервное копирование**
  - 01. Логическое резервирование
  - 02. Базовая резервная копия
  - 03. Архив журнала предзаписи
- Репликация
  - 04. Физическая репликация

## Page 10: День 2 {#source-page-010}

**Репликация (продолжение)**
- 05. Переключение на реплику 06. Логическая репликация 07. Сценарии использования Кластерные технологии
  - 08. Обзор
