Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: База данных 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 в объекте зеркальной базы данных.
Что такое запись измененных данных (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 для автоматизации настройки необходимых компонентов на исходном сервере.
Нажмите кнопку "Начать работу ", чтобы инициировать рабочий процесс включения.
На этой странице отображается текущее состояние необходимых необходимых компонентов. Если управляемое удостоверение, назначенное системой (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 подтвержден издателю. |
размер_пакета | инт | Размер пакета (в байтах) |