Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Зеркалирование в 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 в артефакте зеркальной базы данных.
Что такое запись измененных данных (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 для автоматизации этих необходимых конфигураций на исходном сервере.
Нажмите кнопку "Начать работу ", чтобы инициировать рабочий процесс включения.
На этой странице отображается текущее состояние необходимых необходимых компонентов. Если управляемое удостоверение, назначенное системой (SAMI), не включено для этого сервера, выберите ссылку, чтобы перейти на страницу, где вы можете включить эту функцию.
После завершения выберите базы данных, чтобы включить зеркальное отображение Fabric (до трех по умолчанию, но можно увеличить это ограничение до шести, изменив параметр max_mirrored_databases), а затем выберите Prepare.
Рабочий процесс отображает всплывающее окно "Перезапустить сервер". Выбрав "Перезапустить", вы запускаете процесс. Рабочий процесс автоматизирует все остальные шаги конфигурации. Вы можете начать создание зеркальной базы данных из пользовательского интерфейса Fabric.
Создание роли базы данных для зеркального отображения Структуры
Затем необходимо предоставить или создать роль PostgreSQL для службы Fabric, чтобы подключиться к гибкому серверу Базы данных Azure для PostgreSQL.
Эту задачу можно выполнить, указав роль базы данных для подключения к исходной системе.
Замечание
Для подключения зеркалирования Fabric к База данных Azure для PostgreSQL поддерживаются как роли Entra ID, так и роли локальной базы данных. Выберите метод проверки подлинности , который лучше всего подходит для ваших целей.
Использование роли базы данных
Подключитесь к База данных Azure для PostgreSQL с помощью Visual Studio Code или pgAdmin. Подключитесь к главному субъекту, который является членом роли
azure_pg_admin.Создайте роль 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;Пользователь базы данных, которого вы создаете, также должен быть владельцем
ownerтаблиц для репликации в зеркальной базе данных. Это требование означает, что пользователь создает таблицы или изменяет владение этими таблицами с помощьюALTER TABLE <table name here> OWNER TO fabric_user;.- При передаче прав владения новому пользователю может потребоваться сначала предоставить этому пользователю все привилегии на схему
public. Дополнительные сведения об управлении учетными записями пользователей см. в документации по управлению пользователями в Azure Database для PostgreSQL, в документации PostgreSQL по ролям и привилегиям базы данных, синтаксису GRANT и привилегиям.
- При передаче прав владения новому пользователю может потребоваться сначала предоставить этому пользователю все привилегии на схему
Это важно
Если пропустить один из предыдущих шагов конфигурации безопасности, последующие зеркальные операции на портале 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=()] - Типы столбцов являются одним из следующих типов:
bigintbigserialbooleanbytescharactercharacter varyingdatedouble precisionintegernumericrealserialoidmoneysmallintsmallserialtexttime without time zonetime with time zonetimestamp without time zonetimestamp with time zoneuuidxmljsonjsonbinetcidrmacaddrmacaddr8tsvectortsqueryint4rangeint8rangenumrangetsrangetstzrangedaterangecirclelinelsegboxpathpointpolygoninterval
- Таблица не является ни представлением, ни материализованным представлением, ни сторонней таблицей, ни 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 | Бигинт | порядковый номер созданного файла |