BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Курсы по системам бизнес-анализа и методологии » Учебный курс по PostgreSQL » Как устроен PostgreSQL » Как работает POINT-IN-TIME RECOVERY в PostgreSQL

Как работает POINT-IN-TIME RECOVERY в PostgreSQL

На рис. 118 показана основная концепция PITR. В режиме PITR PostgreSQL воспроизводит WAL-данные архивных журналов на базовой резервной копии, начиная с точки REDO, созданной командой pg_backup_start, и заканчивая точкой, которую Вы хотите восстановить.

Итак, давайте посмотрим, как же работает PITR.

Предположим, что 1 января 2024 года в 12:05 Вы допустили ошибку. В этом случае Вам следует удалить кластер базы данных и восстановить резервную копию базы, сделанную ранее.

В первую очередь необходимо задать команду в параметре 'restore_command', а также установить время в параметре 'recovery_target_time' на момент, когда Вы допустили ошибку (в данном случае 12:05) в файле postgresql.conf (в версии 11 и более ранних версиях - recovery.conf).

# Place archive logs under /mnt/server/archivedir directory.
restore_command = 'cp /mnt/server/archivedir/%f %p'
recovery_target_time = "2024-1-1 12:05 GMT"

 

При запуске PostgreSQL переходит в режим PITR, если в кластере баз данных есть файл 'backup_label', а также файл 'recovery.signal' (в версии 11 и более ранних версиях -'recovery.conf').

 

Примечание: recovery.conf / recovery.signal

В версии 12 файл recovery.conf был упразднен, теперь все параметры, связанные с восстановлением БД, должны быть записаны в файле postgresql.conf. Более подробную информацию Вы найдете в официальном документе.

В версии 12 и новее при восстановлении сервера из резервной копии в первую очередь необходимо создать пустой файл recovery.signal в каталоге кластера баз данных.

$ touch /usr/local/pgsql/data/recovery.signal

 

Процесс PITR (Point-in-Time Recovery) практически не отличается от обычного процесса восстановления, описанного в разделе 9.8. Главные отличия одного процесса от другого заключаются в следующем:

  1. Откуда считываются сегменты WAL/журналы архива?
  • Обычный режим восстановления - из подкаталога pg_wal (в версии 9.6 и более ранних версиях - подкаталог pg_xlog) в базовом каталоге.
  • Режим PITR - из архивного каталога, заданного в параметре 'archive_command'.

 

  1. Откуда считывается местоположение контрольной точки?
  • Обычный режим восстановления - из файла pg_control.
  • Режим PITR - из файла backup_label.

 

Итак, процесс PITR выглядит следующим образом:

(1) Для того, чтобы  найти точку REDO, PostgreSQL считывает значение 'CHECKPOINT LOCATION' из файла backup_label с помощью внутренней функции read_backup_label();

 

(2) PostgreSQL считывает некоторые значения параметров из postgresql.conf, такие как 'restore_command' и 'recovery_target_time');

 

(3) PostgreSQL начинает воспроизведение WAL-данных с точки REDO, которую можно получить из значения параметра 'CHECKPOINT LOCATION'. Данные WAL считываются из архивных журналов, которые копируются из архивной области во временную область путем выполнения команды, записанной в параметре 'restore_command'. (Скопированные файлы журналов во временной области удаляются после использования).

В нашем случае PostgreSQL считывает и воспроизводит данные WAL из точки REDO до временной метки '2024-1-1 12:05:00', поскольку параметр 'recovery_target_time' установлен именно на эту временную метку.

 

(4) По завершении процесса восстановления в подкаталоге pg_wal (в версиях 9.6 и более ранних - в подкаталоге pg_xlog) создается файл timeline history, например '00000002.history'.

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

Записи действий фиксации и отмены содержат метку времени, в которую каждое действие было выполнено (часть данных XLOG для обоих действий определена в xl_xact_commit и xl_xact_abort соответственно).

xl_xact_commit

typedef struct xl_xact_commit
{
        TimestampTz      xact_time;          /* time of commit */
        uint32          xinfo;              /* info flags */
        int                          nrels;              /* number of RelFileNodes */
        int                          nsubxacts;          /* number of subtransaction XIDs */
        int                          nmsgs;              /* number of shared inval msgs */
        Oid                        dbId;               /* MyDatabaseId */
        Oid                        tsId;               /* MyDatabaseTableSpace */
        /* Array of RelFileNode(s) to drop at commit */
       RelFileNode     xnodes[1];          /* VARIABLE LENGTH ARRAY */
        /* ARRAY OF COMMITTED SUBTRANSACTION XIDs FOLLOWS */
        /* ARRAY OF SHARED INVALIDATION MESSAGES FOLLOWS */
} xl_xact_commit;

l_xact_abort
ypedef struct xl_xact_abort
{
        TimestampTz     xact_time;          /* time of abort */
        int                          nrels;              /* number of RelFileNodes */
        int             nsubxacts;          /* number of subtransaction XIDs */
        /* Array of RelFileNode(s) to drop at abort */
        RelFileNode     xnodes[1];          /* VARIABLE LENGTH ARRAY */
        /* ARRAY OF ABORTED SUBTRANSACTION XIDs FOLLOWS */
} xl_xact_abort;

 

Поэтому, если в параметре 'recovery_target_time' задано целевое время, всякий раз, когда воспроизводит XLOG-запись действия фиксации или отмены, PostgreSQL может выбирать, продолжать восстановление или нет. Когда XLOG-запись каждого действия воспроизводится, PostgreSQL сравнивает целевое время и каждую временную метку, записанную в записи, и если временная метка превышает целевое время, процесс PITR завершается.

 

Примечание:

Функция read_backup_label() определена в src/backend/access/transam/xlog.c.

Структуры xl_xact_commit и xl_xact_abort определены в src/include/access/xact.h.

 

Примечание: Почему мы можем использовать обычные средства архивации для создания базовой резервной копии?

Процесс восстановления - это процесс восстановления кластера баз данных до согласованного состояния. PITR может восстановить кластер базы данных, даже если базовая резервная копия представляет собой ряд непоследовательных файлов. Именно поэтому мы можем использовать обычные средства архивации без необходимости создания снимков файловой системы или использования каких-либо специальных инструментов.

 

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
Создание базовой резервной копии PostgreSQL
Следующая статья →
timelineid и файл timeline history в PostgreSQL

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • ЭГИС - международная фармацевтическая компания, основанная в 1907 году в Венгрии. Компания имеет представительства более чем в 60 странах мира, в том числе в России. Компания ЭГИС является одним из ведущих производителей дженерических лекарственных средств в Центральной и Восточной Европе. Её деятельность охватывает все звенья производственно-сбытовой фармацевтической цепочки.

  • Авиакомпания NordStar (АО «АК «НордСтар») – работает под данным брендом с 2008 г. и сейчас входит в топ-15 крупнейших российских авиакомпаний (данные Росавиации) с пассажирооборотом более 1 млн человек в год. АО «АК «НордСтар» выполняет и внутренние, и внешние рейсы, а ее основные хабы - Домодедово, Пулково и Емельяново. С 2021 года компания является базовым перевозчиком аэропорта Норильск.

  • НПФ «Будущее» — один из крупнейших негосударственных пенсионных фондов России, предоставляющий услуги по пенсионному обеспечению и накоплениям. Фонд активно внедряет цифровые технологии для повышения качества обслуживания клиентов.

  • Российский филиал одного их ведущих мировых производителей и дистрибьютеров косметики Estee Lauder Companies Inc. выбрал аналитическую платформу Loginom для предиктивной аналитики продаж как в офлайн-, так и в онлайн-канале.

  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.