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

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

Это важно

Только что созданные серверы после Ignite 2025 автоматически включают последнюю общедоступную версию компонентов зеркального отображения. Существующие серверы постепенно обновляются в рамках следующих циклов обслуживания без вмешательства вручную. Вам не нужно отключить и повторно включить зеркальное отображение для получения обновлений.

Architecture

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

После настройки зеркального отображения Fabric для базы данных в гибком сервере базы данных Azure для 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 и копирует их в зону приземления платформы Microsoft Fabric OneLake для последующей обработки.

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

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

Поддерживаемые версии

База данных Azure для PostgreSQL поддерживает зеркалирование в Fabric для PostgreSQL начиная с версии 14.

Предпосылки

Прежде чем использовать зеркальное отображение Fabric в гибком экземпляре сервера Базы данных Azure для PostgreSQL, необходимо настроить следующие предварительные требования:

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

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

  • параметр wal_level должен иметь значение "логический".

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

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

Это важно

Вам не нужно вручную настраивать эти три параметра, просто следуйте приведенному ниже рабочему процессу.

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

Скриншот, демонстрирующий страницу зеркального отображения New Fabric на портале Azure для начала включения.

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

Снимок экрана: страница зеркального отображения New Fabric на портале Azure для выбора баз данных.

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

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

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

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

Создание роли базы данных для зеркального отображения Структуры

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

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

Замечание

Для подключения зеркалирования Fabric к База данных Azure для PostgreSQL поддерживаются как роли Entra ID, так и роли локальной базы данных. Выберите метод проверки подлинности , который лучше всего подходит для ваших целей.

Использование роли базы данных

  1. Подключитесь к База данных Azure для PostgreSQL с помощью Visual Studio Code или pgAdmin. Подключитесь к главному субъекту, который является членом роли azure_pg_admin.

  2. Создайте роль PostgreSQL с именем fabric_user. Вы можете выбрать любое имя для этой роли. Укажите собственный надежный пароль. Предоставьте необходимые разрешения для зеркалирования Fabric в базе данных. Выполните следующий скрипт SQL, чтобы предоставить разрешения CREATEDB, CREATEROLE, LOGIN, REPLICATION и azure_cdc_admin новой роли с именем fabric_user.

    -- create a new user to connect from Fabric
    CREATE ROLE fabric_user CREATEDB CREATEROLE LOGIN REPLICATION PASSWORD '<strong password>';
    
    -- grant role for replication management to the new user
    GRANT azure_cdc_admin TO fabric_user;
    -- grant create permission on the database to mirror to the new user
    GRANT CREATE ON DATABASE <database_to_mirror> TO fabric_user;
    
  3. Пользователь базы данных, которого вы создаете, также должен быть владельцем owner таблиц для репликации в зеркальной базе данных. Это требование означает, что пользователь создает таблицы или изменяет владение этими таблицами с помощью ALTER TABLE <table name here> OWNER TO fabric_user;.

Это важно

Если пропустить один из предыдущих шагов конфигурации безопасности, последующие зеркальные операции на портале Fabric завершаются ошибкой с сообщениемInternal error.

Parameters

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

  • 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. Клиенты могут увеличить это значение до 6 (жесткого ограничения), если они должны зеркально отображать более трех баз данных на этом сервере. Важно учитывать, что каждая новая зеркальная база данных потребляет ресурсы сервера (пять фоновых процессов с использованием ресурсов ЦП и памяти для создания моментальных снимков и пакетной обработки памяти), поэтому в зависимости от того, насколько занят сервер, следует отслеживать использование ресурсов и увеличивать размер вычислительных ресурсов до следующего размера, если использование ЦП и памяти постоянно превышает 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_cdc.prune_local_batches: по умолчанию имеет значение True. Если задано, удалите пакетные данные с локального диска, после успешной передачи и подтверждения в wal_sender.

Monitor

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

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

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

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

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

    • название публикации (текст)
    • 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.get_all_tables_mirror_status(): возвращает состояние зеркального отображения для всех соответствующих таблиц в базе данных. Исключает системные схемы (pg_catalog, information_schema, pg_toast) и таблицы, принадлежащие расширению.

Имя столбца Тип Postgres Explanation
схема таблицы текст Имя схемы для таблицы
имя_таблицы текст имя таблицы
статус_отражения текст Общее состояние — ОК, ПРЕДУПРЕЖДЕНИЕ или ОШИБКА
данные_зеркалирования jsonb Массив JSONB, содержащий подробные записи статуса с состоянием, status_code и необязательными сведениями
Код состояния Level Description
СХЕМА_НЕ_СУЩЕСТВУЕТ ОШИБКА Указанная схема не существует
ТАБЛИЦА_НЕ_СУЩЕСТВУЕТ ОШИБКА Указанная таблица не существует в схеме
ЗАПРЕЩЕННЫЕ_СИМВОЛЫ_В_ИМЕНИ_СТОЛБЦА ОШИБКА Имена столбцов содержат запрещенные символы
ЗАПРЕЩЕННЫЕ_СИМВОЛЫ_В_ИМЕНИ_ТАБЛИЦЫ ОШИБКА Имя таблицы содержит запрещенные символы
UNSUPPORTED_DATA_TYPE ПРЕДУПРЕЖДЕНИЕ Таблица содержит столбцы с неподдерживаемыми типами данных
UNSUPPORTED_TYPE_IN_REPLICA_IDENTITY ОШИБКА Неподдерживаемый формат данных в столбцах идентификации реплики (если уникальный индекс отсутствует)
НЕ_СТАНДАРТНАЯ_ТАБЛИЦА ОШИБКА Таблица не является обычной, постоянной таблицей
НЕ_ВЛАДЕЛЕЦ_ТАБЛИЦЫ (NOT_TABLE_OWNER) ОШИБКА Текущий пользователь не является владельцем таблицы
HAS_PRIMARY_KEY ХОРОШО Таблица имеет первичный ключ
HAS_UNIQUE_INDEX ХОРОШО Таблица имеет подходящий уникальный индекс
NO_INDEX_FULL_IDENTITY ПРЕДУПРЕЖДЕНИЕ Нет подходящего уникального индекса; будет использоваться полная идентификация строки (может повлиять на производительность)
  • Для зеркального отображения таблицы необходимо выполнить следующие условия:
    • Имена столбцов не содержат ни одного из следующих символов: [ ;{}\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
      • xml
      • json
      • jsonb
      • inet
      • cidr
      • macaddr
      • macaddr8
      • tsvector
      • tsquery
      • int4range
      • int8range
      • numrange
      • tsrange
      • tstzrange
      • daterange
      • circle
      • line
      • lseg
      • box
      • path
      • point
      • polygon
      • interval
    • Таблица не является ни представлением, ни материализованным представлением, ни сторонней таблицей, ни TOAST-таблицей, ни секционированной таблицей.
    • В таблице есть первичный ключ или уникальный, не допускающий значение NULL, и непартийный индекс. Если эти требования не выполнены, зеркалирование всё равно работает за счёт применения replica identity FULL, но этот выбор существенно сказывается на общей производительности репликации и расходе WAL. Для таблиц нетривиального размера используйте первичный ключ или уникальный индекс.

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

  • azure_cdc.tracked_publications: одна строка для каждой существующей зеркальной базы данных в Fabric. Запросите эту таблицу, чтобы понять состояние каждой публикации.
Имя столбца Тип Postgres Explanation
Идентификатор публикации (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 Номер последовательности журнала, в котором остановлен поток изменений
размер снимка Бигинт Общий размер моментального снимка (в байтах)
общее_время инт Общее время (в секундах) для публикации
  • azure_cdc.tracked_batches: одна строка для каждого пакета изменений, записанного и отправленного в Fabric OneLake. Запросите эту таблицу, чтобы понять, какой пакет уже записан и отправлен в Fabric OneLake. Используя столбец last_written_lsn, можно определить, была ли данная транзакция из исходной базы данных уже передана в Fabric.
Имя Тип Postgres Explanation
Идентификатор публикации (publication_id) oid Oid публикации
идентификатор_завершенной_партии Бигинт Порядковый номер (начиная с 1) пакета. Уникальность для каждой публикации
last_written_lsn pg_lsn LSN последней записи этого пакета
  • azure_cdc.tracked_tables: одна строка для каждой таблицы, отслеживаемой во всех публикациях. Он содержит следующие поля для всех опубликованных таблиц во всех публикациях. Если таблица является частью двух публикаций, она отображается дважды.
Имя Тип Postgres Explanation
Идентификатор публикации (publication_id) oid Oid публикации
table_oid oid Oid таблицы
sequence_number Бигинт порядковый номер созданного файла