Поделиться через


Зеркальное отображение Базы данных Azure для PostgreSQL в Microsoft Fabric

ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных Azure для PostgreSQL — гибкий сервер

Зеркальное отображение в Fabric предоставляет простой способ избежать сложного процесса ETL (извлечение, преобразование и загрузка) и интегрировать вашу существующую гибкую серверную инфраструктуру базы данных Azure для PostgreSQL с остальными вашими данными в Microsoft Fabric. Вы можете непрерывно реплицировать существующий гибкий сервер Базы данных Azure для PostgreSQL непосредственно в Fabric OneLake. В Fabric можно использовать мощную бизнес-аналитику, искусственный интеллект, инженерию данных, науку о данных и сценарии совместного использования данных.

Архитектура

Зеркалирование Fabric в гибком сервере Базы данных Azure для PostgreSQL основано на таких концепциях, как логическая репликация и шаблон проектирования захвата изменений данных (CDC).

После создания зеркального отображения Fabric для базы данных в Azure Database для гибкого сервера PostgreSQL, фоновый процесс PostgreSQL создает первоначальный моментальный снимок выбранных таблиц для зеркального отображения, который отправляется в целевую зону Fabric OneLake в формате Parquet. Процесс репликатора, выполняющийся в Fabric, принимает эти исходные файлы моментальных снимков и создает дельта-таблицы в артефакте зеркальной базы данных.

Последующие изменения, примененные к выбранным таблицам, также фиксируются в исходной базе данных и отправляются в зону высадки OneLake в пакетах, которые будут применены к соответствующим таблицам Delta в объекте зеркальной базы данных.

Схема комплексной архитектуры зеркального отображения Fabric в гибком сервере Базы данных Azure для PostgreSQL.

Что такое запись измененных данных (CDC)?

Запись измененных данных (CDC) — это метод, позволяющий приложениям обнаруживать и записывать изменения, внесенные в базу данных.

Он не зависит от явных запросов SQL для отслеживания изменений.

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

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

Для репликации Fabric шаблон CDC реализован в проприетарном расширении PostgreSQL под названием azure_cdc. Гибкая контрольная плоскость сервера базы данных Azure для PostgreSQL устанавливается и регистрируется в исходных базах данных во время рабочего процесса включения зеркального отображения Fabric.

Расширение Azure для фиксации изменений данных (CDC)

Azure CDC — это расширение для PostgreSQL, которое улучшает возможности логического декодирования.

Он интерпретирует и преобразует данные журнала Write-Ahead (WAL) в понятный логический формат.

Расширение преобразует изменения базы данных в последовательность логических операций, таких как INSERT, UPDATE и DELETE.

Azure CDC — это слой на основе встроенного подключаемого модуля pgoutputлогического декодирования PostgreSQL.

Azure CDC экспортирует снимки таблиц и изменения в виде файлов Parquet и копирует их в посадочную зону Fabric OneLake для последующей обработки.

Включение зеркального отображения Fabric на портале Azure

Зеркальное отображение структуры на портале Azure для гибкого сервера Базы данных Azure для PostgreSQL позволяет реплицировать базы данных PostgreSQL в Microsoft Fabric. Эта функция позволяет легко интегрировать данные с другими службами в Microsoft Fabric, обеспечивая расширенные аналитические возможности, бизнес-аналитику и сценарии обработки и анализа данных. Выполнив несколько простых действий на портале Azure, вы можете настроить необходимые компоненты и начать зеркальное отображение баз данных для использования полного потенциала Microsoft Fabric.

Предпосылки

Перед использованием дублирования Fabric в базе данных Azure для гибкого сервера PostgreSQL необходимо настроить несколько предварительных условий.

  • Назначаемое системой управляемое удостоверение (SAMI) должно быть включено.\

    • Это удостоверение, используемое Azure CDC для проверки подлинности связи с Fabric OneLake, копирования начальных моментальных снимков и изменения пакетов данных в зону посадки данных.
  • параметр сервера wal_level должен иметь значение "логический".

    • Включает логическую репликацию для исходного сервера.

    Расширение Azure CDC (azure_cdc) предварительно загружено на исходный сервер и зарегистрировано для выбранных баз данных для зеркального отображения (требуется перезапуск).

  • max_worker_processes параметр сервера должен быть увеличен для размещения дополнительных фоновых процессов для зеркального отображения.

Новая страница доступна на портале Azure для автоматизации настройки необходимых компонентов на исходном сервере.

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

Нажмите кнопку "Начать работу ", чтобы инициировать рабочий процесс включения.

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

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

После этого можно выбрать базы данных для включения зеркального отображения Fabric (до 3 по умолчанию, но это можно увеличить, изменив параметр сервера max_mirrored_databases ), а затем нажмите кнопку "Подготовка".

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

Страница зеркального отображения структуры, показывающая, что сервер готов к зеркальным отображениям.

Параметры сервера

Эти параметры сервера напрямую влияют на зеркальное отображение Структуры для Базы данных Azure для PostgreSQL.

  • Azure.fabric_mirror_enabled: По умолчанию выключено. Этот параметр определяет флаг, указывающий, включено ли зеркальное отображение на сервере. Он устанавливается автоматически в конце рабочего процесса включения сервера, поэтому его не следует изменять вручную.

  • ** max_replication_slots **: по умолчанию 10. Мы потребляем один слот репликации для каждой зеркальной базы данных, но клиенты могут рассмотреть возможность увеличения этого, если они создают больше зеркал или имеют другие слоты репликации, созданные для других целей (логическая репликация).

  • max_wal_senders. Значение по умолчанию — 10. Как и в предыдущем параметре, мы используем один wal процесс отправителя на зеркало, что следует увеличить при зеркалировании множества баз данных.

  • max_worker_processes. Значение по умолчанию — 8. После первоначального моментального снимка мы используем один процесс для каждой зеркальной базы данных или там, где активировано зеркалирование, (но в Fabric еще не создан зеркальный артефакт). Это значение необходимо увеличить, если у вас есть другие расширения или рабочие нагрузки, использующие больше рабочих процессов.

  • max_parallel_workers: Значение по умолчанию — 8, что ограничивает количество процессов, которые могут выполняться одновременно. Если включить несколько сеансов зеркального отображения на одном сервере, можно рассмотреть возможность увеличения значения этого параметра для выполнения большего числа параллельных операций (например, повышения степени параллельности в начальных моментальных снимках).

  • azure_cdc.max_fabric_mirrors Значение по умолчанию — 3. Клиенты могут увеличить это значение, если они должны зеркально отображать более трех баз данных на этом сервере. Важно учитывать, что каждая новая зеркальная база данных потребляет ресурсы сервера (пять фоновых процессов с использованием ресурсов ЦП и памяти для создания моментальных снимков и пакетной обработки памяти), поэтому в зависимости от того, насколько занят сервер, следует отслеживать использование ресурсов и увеличивать размер вычислительных ресурсов до следующего размера, если использование ЦП и памяти постоянно превышает 80% или производительность не то, что вы ожидаете.

  • azure_cdc.max_snapshot_workers: значение по умолчанию — 3. Максимальное количество рабочих процессов, используемых во время первоначального создания моментального снимка. Увеличьте это, чтобы ускорить начальное создание моментального снимка при увеличении количества зеркальных баз данных. Однако перед этим следует рассмотреть все остальные фоновые процессы, выполняемые в системе.

  • azure_cdc.change_batch_buffer_size: по умолчанию — 16 МБ. Максимальный размер буфера (в МБ) для пакета изменений. В таблице показано, сколько данных буферизуется до их записи на локальный диск. В зависимости от частоты изменения данных в реплицированных базах данных можно настроить это значение, чтобы уменьшить частоту пакетной обработки изменений или увеличить её, если вы хотите повысить общий уровень пропускной способности.

  • azure_cdc.change_batch_export_timeout: значение по умолчанию — 30. Максимальное время простоя (в секундах) между изменениями пакетных сообщений. При превышении предела мы помечаем текущую партию как завершённую. В зависимости от частоты изменения данных в зеркальных базах данных, можно настроить это значение, чтобы уменьшить частоту пакетных изменений или увеличить ее, если вы хотите отдать предпочтение общей пропускной способности.

  • azure_cdc.parquet_compression: по умолчанию используется ZSTD. Этот параметр предназначен только для внутреннего использования, поэтому его не следует изменять.

  • azure_cdc.snapshot_buffer_size: по умолчанию — 1000. Максимальный размер (в МБ) начального буфера моментальных снимков. Согласно таблице, значительное количество данных буферизуется до этого момента перед отправкой в Fabric. Помните, что azure_cdc.snapshot_buffer_size*azure_cdc.max_snapshot_workers — это общий буфер памяти, используемый во время начального моментального снимка.

  • azure_cdc.snapshot_export_timeout: по умолчанию — 180. Максимальное время (в минутах) для экспорта начального моментального снимка. При превышении мы перезагрузим.

Монитор

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

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

Функции мониторинга

Функция репликации Fabric в Azure Database для PostgreSQL позволяет легко реплицировать базы данных PostgreSQL в Microsoft Fabric, обеспечивая сценарии расширенной аналитики и интеграции данных.

  • azure_cdc.list_tracked_publications(): для каждой публикации на исходном гибком сервере возвращается строка, разделенная запятыми, содержащая следующую информацию : publicationName (text) - includeData (bool) - includeChanges (bool) - active (bool) - baseSnapshotDone (bool) - generationId (int)

  • azure_cdc.publication_status('pub_name'): для каждой публикации в источнике гибкий сервер возвращает строку, разделенную запятыми, со следующими сведениями

    • <состояние, start_lsn, stop_lsn, flush_lsn>.
    • Состояние состоит из ["Имя слота", "Имя источника", "Путь назначения данных CDC", "Активный", "Моментальный снимок завершен", "Процент выполнения", "Идентификатор поколения", "Идентификатор завершенного пакета", "Идентификатор загруженного пакета", "Время начала CDC"]
  • azure_cdc.is_table_mirrorable('schema_name','table_name'): задано имя схемы и таблицы, возвращается, если таблица зеркальна. Чтобы таблица была зеркальной, она должна соответствовать следующим требованиям:

    • Имена столбцов не содержат ни одного из следующих символов: [ ;{}\n\t=()]
    • Типы столбцов являются одним из следующих типов:
      • bigint
      • bigserial
      • boolean
      • bytes
      • character
      • character varying
      • date
      • double precision
      • integer
      • numeric
      • real
      • serial
      • oid
      • money
      • smallint
      • smallserial
      • text
      • time without time zone
      • time with time zone
      • timestamp without time zone
      • timestamp with time zone
      • uuid
    • Таблица не является представлением, материализованным представлением, внешней таблицей, всплывающей таблицей или секционированной таблицей
    • В таблице есть первичный ключ или уникальный, ненулевой и непартийный индекс.

Таблицы отслеживания

  • azure_cdc.tracked_publications: одна строка для каждой существующей зеркальной базы данных в Fabric. Запросите эту таблицу, чтобы понять состояние каждой публикации.
Имя столбца Тип Postgres Объяснение
Идентификатор публикации (publication_id) oid Oid публикации
путь назначения текст Маршрут к посадочной зоне в Fabric OneLake
формат назначения azure_cdc.data_format Формат данных в Azure CDC
include_data bool Вопрос о включении исходных данных моментального снимка в публикацию
включить_изменения bool Следует ли включать изменения в публикацию
активный bool Является ли публикация активной
снимок_завершен bool Завершен ли моментальный снимок
прогресс снимка smallint Прогресс моментального снимка
процент выполнения снимка текст Процент хода выполнения моментального снимка
идентификатор поколения инт Идентификатор поколения
stream_start_lsn pg_lsn Номер последовательности журнала, в котором запущен поток изменений
время_начала_трансляции отметка времени Метка времени начала потока изменений
stream_stop_lsn pg_lsn Номер последовательности журнала, в котором остановлен поток изменений
размер снимка bigint Общий размер моментального снимка (в байтах)
общее_время инт Общее время (в секундах) для публикации
  • azure_cdc.tracked_batches: одна строка для каждого пакета изменений, записанного и отправленного в Fabric OneLake. Запросите эту таблицу, чтобы понять, какой пакет уже был записан и отправлен в Fabric OneLake. С помощью столбца last_written_lsn можно понять, была ли данная транзакция в базе данных-источнике уже отправлена в Fabric.
Имя Тип Postgres Объяснение
идентификатор_публикации oid Идентификатор объекта публикации
идентификатор_завершенной_партии bigint Порядковый номер (начиная с 1) пакета. Уникальность для каждой публикации
last_written_lsn pg_lsn LSN последней записи этого пакета
последний_полученный_lsn pg_lsn Последняя полученная LSN
server_lsn pg_lsn текущий номер LSN сервера (в то время, когда запись этого пакета завершена)
загружена_пакетами bool Отправляется ли пакет
подтверждена ли партия bool Признали ли мы wal_sender для этих пакетных данных (last_written_lsn)
время_начала_пакета TIMESTAMPTZ Метка времени запуска пакета
время завершения партии TIMESTAMPTZ Метка времени завершения партии
время_загрузки_пакета TIMESTAMPTZ Метка времени отправки пакета
время подтверждения партии TIMESTAMPTZ Отметка времени пакета, когда LSN подтвержден издателю.
размер_пакета инт Размер пакета (в байтах)