Partilhar via


Espelhamento do Azure Database para PostgreSQL no Microsoft Fabric

O espelhamento no Fabric (agora disponível de forma geral) proporciona uma experiência fácil para evitar processos de ETL (Extract Transform Load) complexos e integrar a sua instância de Base de Dados do Azure para PostgreSQL com o resto dos seus dados no Microsoft Fabric. Você pode replicar continuamente seu Banco de Dados do Azure existente para PostgreSQL diretamente no Fabric OneLake. Dentro do Fabric, você pode desbloquear cenários poderosos de business intelligence, inteligência artificial, engenharia de dados, ciência de dados e compartilhamento de dados.

Importante

Os servidores recém-criados após o Ignite 2025 incluem automaticamente a versão mais recente de disponibilidade geral dos componentes de espelhamento. Os servidores existentes atualizam-se progressivamente como parte dos próximos ciclos de manutenção, sem necessidade de intervenção manual. Não precisas de desativar e reativar o espelhamento para receber atualizações.

Arquitetura

O espelhamento de malha no Banco de Dados do Azure para PostgreSQL é baseado em conceitos como replicação lógica e padrão de design CDC (Change Data Capture).

Depois de estabelecer o espelhamento Fabric para uma base de dados numa instância de servidor flexível Azure Database for PostgreSQL, um processo em segundo plano do PostgreSQL cria um snapshot inicial para tabelas selecionadas a serem espelhadas. Envia o instantâneo para uma zona de aterragem Fabric OneLake em formato Parquet. Um processo do Replicator em execução no Fabric utiliza esses arquivos de instantâneo iniciais e cria tabelas Delta no artefacto de base de dados espelhada.

A base de dados de origem regista alterações subsequentes aplicadas a tabelas selecionadas. Envia estas alterações para a zona de aterragem do OneLake em lotes para serem aplicadas às respetivas tabelas Delta no artefacto da base de dados espelhada.

Diagrama de arquitetura de ponta a ponta para espelhamento de Fabric numa Base de Dados do Azure para uma instância de servidor PostgreSQL flexível.

O que é Change Data Capture (CDC)?

O Change Data Capture (CDC) é um método que permite que os aplicativos detetem e capturem alterações feitas em um banco de dados.

Ele não depende de consultas SQL explícitas para controlar alterações.

Em vez disso, envolve um fluxo contínuo de eventos de alteração publicados pelo servidor de banco de dados.

Os clientes podem se inscrever nesse fluxo para monitorar as alterações, concentrando-se em bancos de dados específicos, tabelas individuais ou até mesmo subconjuntos de colunas dentro de uma tabela.

Para espelhamento de malha, o padrão CDC é implementado em uma extensão proprietária do PostgreSQL chamada azure_cdc. O plano de controle para uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL é instalado e registrado nos bancos de dados de origem durante o fluxo de trabalho de ativação de espelhamento Fabric.

Extensão do Azure Change Data Capture (CDC)

O Azure CDC é uma extensão para o PostgreSQL que aprimora os recursos de decodificação lógica.

Ele interpreta e transforma dados Write-Ahead Log (WAL) em um formato lógico compreensível.

A extensão converte modificações de banco de dados em uma sequência de operações lógicas como INSERT, UPDATE e DELETE.

O Azure CDC é uma camada sobre o plug-in de decodificação lógica interno do PostgreSQL, pgoutput.

O Azure CDC exporta instantâneos de tabelas e as suas modificações como ficheiros Parquet, copiando-os para uma zona de aterragem do Microsoft Fabric OneLake para processamento subsequente.

Habilitar o espelhamento de malha no portal do Azure

O espelhamento de Fabric no portal do Azure para uma instância de servidor flexível do Azure Database for PostgreSQL permite replicar os seus bancos de dados PostgreSQL no Microsoft Fabric. Esse recurso ajuda você a integrar seus dados perfeitamente com outros serviços no Microsoft Fabric, permitindo cenários avançados de análise, business intelligence e ciência de dados. Seguindo algumas etapas simples no portal do Azure, você pode configurar os pré-requisitos necessários e começar a espelhar seus bancos de dados para usar todo o potencial do Microsoft Fabric.

Versões suportadas

O Azure Database for PostgreSQL suporta PostgreSQL 14 e posteriores para espelhamento em Fabric.

Pré-requisitos

Antes de poderes usar o espelhamento do Fabric numa base de dados Azure para uma instância de servidor flexível PostgreSQL, precisas de configurar vários pré-requisitos.

  • A Identidade Gerida atribuída pelo Sistema (SAMI) deve estar ativada.
    • O Azure CDC utiliza esta identidade para autenticar comunicações com o Fabric OneLake, copiar snapshots iniciais e alterar lotes para a zona de aterragem.

Configura pré-requisitos adicionais através de um fluxo de trabalho dedicado de habilitação descrito na secção seguinte. Estes pré-requisitos são:

  • O parâmetro do servidor wal_level deve estar definido como "lógico".

    • Permite a replicação lógica para o servidor de origem.
  • max_worker_processes parâmetro do servidor deve ser aumentado para acomodar mais processos em segundo plano para espelhamento.

  • azure_cdc extensão. A extensão CDC do Azure (azure_cdc) é pré-carregada no servidor de origem e registrada para bancos de dados selecionados espelharem (requer reinicialização).

Uma nova página está disponível no portal Azure para automatizar estas configurações prévias no servidor de origem.

Captura de ecrã mostrando a página de espelhamento do New Fabric no portal do Azure para começar a ativação.

Selecione Introdução para iniciar o fluxo de trabalho de habilitação.

Captura de ecrã mostrando a página Nova Malha de espelhamento no portal do Azure para bancos de dados selecionados.

Esta página mostra o status atual dos pré-requisitos necessários. Se o SAMI (System Assigned Managed Identity) não estiver habilitado para este servidor, selecione o link a ser redirecionado para a página onde você pode habilitar esse recurso.

Quando terminares, seleciona as bases de dados para ativar o espelhamento do Fabric (até três por defeito, mas podes aumentar este limite mudando o parâmetro max_mirrored_databases servidor) e depois seleciona Preparar.

O fluxo de trabalho apresenta um pop-up para reiniciar o servidor. Ao selecionar Reiniciar, inicia o processo. O fluxo de trabalho automatiza todas as restantes etapas de configuração. Podes começar a criar a tua base de dados espelhada a partir da interface do utilizador do Fabric.

Página de espelhamento de malha mostrando o servidor pronto para espelhamento.

Criar um papel de base de dados para Fabric Mirroring

Em seguida, você precisa fornecer ou criar uma função PostgreSQL para o serviço Fabric para se conectar ao seu banco de dados do Azure para servidor flexível PostgreSQL.

Pode realizar esta tarefa especificando um papel na base de dados para se ligar ao seu sistema de origem.

Observação

Tanto o Entra ID como as funções de bases de dados locais são suportadas para ligar a replicação do Fabric ao Azure Database para PostgreSQL. Selecione o método de autenticação que melhor se adequa aos seus objetivos.

Usar uma função de banco de dados

  1. Liga-te à tua base de dados Azure para PostgreSQL usando Visual Studio Code ou pgAdmin. Conecte-te com um diretor que seja membro do cargo azure_pg_admin.

  2. Crie uma função PostgreSQL chamada fabric_user. Você pode escolher qualquer nome para essa função. Forneça a sua própria palavra-passe forte. Conceda as permissões necessárias para o espelhamento de malha no banco de dados. Execute o seguinte script SQL para conceder as CREATEDBpermissões , CREATEROLE, LOGIN, REPLICATIONe azure_cdc_admin à nova função denominada 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. O utilizador da base de dados que criar também precisa de ser owner uma das tabelas a replicar na base de dados espelhada. Este requisito significa que o utilizador cria as tabelas ou altera a propriedade dessas tabelas usando ALTER TABLE <table name here> OWNER TO fabric_user;.

Importante

A falta de um dos passos anteriores de configuração de segurança faz com que operações espelhadas subsequentes no portal Fabric falhem com uma mensagem de Internal error.

Parâmetros do servidor

Estes parâmetros de servidor afetam diretamente a replicação do Fabric no Azure Database para PostgreSQL e podem ser usados para otimizar o processo de replicação para o Fabric OneLake.

  • Azure.fabric_mirror_enabled: O padrão está desativado. Este parâmetro especifica o sinalizador que indica se o espelhamento está habilitado no servidor. Ele é definido automaticamente no final do fluxo de trabalho de ativação do servidor, portanto, você não deve alterá-lo manualmente.

  • max_replication_slots: Padrão 10. Consumimos um slot de replicação por banco de dados espelhado, mas os clientes podem considerar aumentar isso se criarem mais espelhos ou tiverem outros slots de replicação criados para outros fins (replicação lógica).

  • max_wal_senders: O padrão é 10. Como no parâmetro anterior, usamos um wal processo de remetente por espelho, que deve ser aumentado ao espelhar mais bancos de dados.

  • max_worker_processes: O padrão é 8. Após o snapshot inicial, usamos um processo por banco de dados espelhado ou onde o espelhamento está habilitado (mas nenhum artefato espelhado foi criado no Fabric ainda). Você deve aumentar esse valor se tiver outras extensões ou cargas de trabalho usando mais processos de trabalho.

  • max_parallel_workers: O padrão é 8, o que limita o número de executantes que podem ser utilizados simultaneamente. Se você habilitar várias sessões de espelhamento no mesmo servidor, poderá considerar aumentar esse parâmetro para permitir mais operações paralelas (por exemplo, aumentar o paralelismo em instantâneos iniciais).

  • azure_cdc.max_fabric_mirrors O valor padrão é 3. Os clientes podem aumentar esse valor se precisarem espelhar mais de três bancos de dados nesse servidor. É importante considerar que cada novo banco de dados espelhado consome recursos do servidor (cinco processos em segundo plano usando recursos de CPU e memória para criação de instantâneos e processamento em lote de alterações), portanto, dependendo de quão ocupado o servidor está, você deve monitorar a utilização de recursos e aumentar o tamanho da computação para o próximo tamanho disponível se a utilização da CPU e da memória estiver constantemente acima de 80% ou o desempenho não for o esperado.

  • azure_cdc.max_snapshot_workers: o padrão é 3. Número máximo de processos de trabalho usados durante a criação inicial do snapshot. Aumente isso para acelerar a criação inicial de snapshots ao aumentar o número de bancos de dados espelhados. No entanto, você deve considerar todos os outros processos em segundo plano em execução no sistema antes de fazer isso.

  • azure_cdc.change_batch_buffer_size: o padrão é 16 MB. Tamanho máximo do buffer (em MB) para o lote de alterações. A tabela mostra até que ponto os dados são armazenados em buffer antes de serem gravados no disco local. Dependendo da frequência de alteração de dados em seus bancos de dados espelhados, você pode ajustar esse valor para reduzir a frequência do lote de alterações ou aumentá-la se quiser priorizar a taxa de transferência geral.

  • azure_cdc.change_batch_export_timeout: o padrão é 30. Tempo máximo ocioso (em segundos) entre mensagens de alteração por lote. Quando o limite é excedido, marcamos o lote atual como concluído. Dependendo da frequência de alteração de dados em seus bancos de dados espelhados, você pode ajustar esse valor para reduzir a frequência do lote de alterações ou aumentá-la se quiser priorizar a taxa de transferência geral.

  • azure_cdc.parquet_compression: O padrão é ZSTD. Este parâmetro é apenas para uso interno, portanto, você não deve modificá-lo.

  • azure_cdc.snapshot_buffer_size: Valor padrão é 1000. O tamanho máximo (em MB) do buffer de instantâneo inicial. De acordo com a tabela, muitos dados são armazenados em buffer antes de serem enviados para a malha. Lembre-se de que azure_cdc.snapshot_buffer_size*azure_cdc.max_snapshot_workers é o buffer de memória total usado durante o snapshot inicial.

  • azure_cdc.snapshot_export_timeout: Por padrão, 180. Tempo máximo (em minutos) para exportar o snapshot inicial. Se o tempo máximo for excedido, então reinicia.

  • azure_cdc.prune_local_batches: Por defeito, é verdadeiro. Se estiver definido, remova os dados em lote do disco local, assim que forem carregados e confirmados com sucesso para wal_sender.

Ecrã

Monitorizar o espelhamento do Fabric na Azure Database para instâncias flexíveis de servidores PostgreSQL é essencial para garantir que o processo de espelhamento corre de forma fluida e eficiente. Ao monitorizar o estado das bases de dados espelhadas, pode identificar quaisquer problemas potenciais e tomar medidas corretivas.

Pode usar várias funções e tabelas definidas pelo utilizador para monitorizar métricas importantes de CDC na Azure Database para instâncias de servidor flexível PostgreSQL e resolver o processo de espelhamento para o Fabric.

Funções de monitorização

A função de espelhamento de tecido no Azure Database for PostgreSQL replica as suas bases de dados PostgreSQL no Microsoft Fabric de forma fluida, permitindo o uso de cenários de análises avançadas e integração de dados.

  • azure_cdc.list_tracked_publications(): Para cada publicação na instância do servidor flexível de origem, devolve uma cadeia separada por vírgulas contendo a seguinte informação

    • publicaçãoNome (texto)
    • includeData (bool)
    • incluirAlterações (bool)
    • ativo (bool)
    • baseSnapshotDone (bool)
    • generationId (int)
  • azure_cdc.publication_status('pub_name'): Para cada publicação na fonte, a instância do servidor flexível devolve uma cadeia separada por vírgulas com a seguinte informação

    • <Estado, start_lsn, stop_lsn, flush_lsn>.
    • O status consiste em ["Nome do slot", "Nome de origem", "Caminho de destino de dados CDC", "Ativo", "Instantâneo concluído", "Porcentagem de progresso", "ID de geração", "ID de lote concluído", "ID de lote carregado", "Hora de início do CDC"]
  • azure_cdc.get_all_tables_mirror_status(): Devolve o estado de espelhamento para todas as tabelas elegíveis na base de dados. Exclui esquemas do sistema (pg_catalog, information_schema, pg_toast) e tabelas pertencentes à extensão.

Nome da Coluna Tipo Postgres Explicação
esquema_da_tabela enviar SMS Nome do esquema da tabela
nome_da_tabela enviar SMS Nome da tabela
estado_de_espelhamento enviar SMS Estado geral - OK, AVISO ou ERRO
espelhamento_de_dados jsonb Array JSONB contendo entradas detalhadas de estado com estado, status_code e detalhes opcionais
Código de estado Nível Description
ESQUEMA_NÃO_EXISTE ERROR O esquema especificado não existe
TABELA_NÃO_EXISTE ERROR A tabela especificada não existe no esquema
CARACTERES_PROIBIDOS_NO_NOME_DA_COLUNA ERROR Os nomes das colunas contêm caracteres proibidos
CARACTERES_PROIBIDOS_NOME_TABELA ERROR O nome da tabela contém caracteres proibidos
UNSUPPORTED_DATA_TYPE ADVERTÊNCIA A tabela tem colunas com tipos de dados não suportados
UNSUPPORTED_TYPE_IN_REPLICA_IDENTITY ERROR Tipo de dado não suportado em colunas de identidade réplica (quando não existe um índice único)
TABELA_NÃO_REGULAR ERROR A tabela não é uma tabela regular nem permanente
NÃO_PROPRIETÁRIO_DA_TABELA ERROR O utilizador atual não é o proprietário da tabela
POSSUI_CHAVE_PRIMÁRIA OK A tabela tem uma chave primária
TEM_ÍNDICE_ÚNICO OK A tabela tem um índice único adequado
NO_INDEX_FULL_IDENTITY ADVERTÊNCIA Não existe um índice único adequado; a identidade completa da linha será usada (pode afetar o desempenho)
  • Para que uma tabela seja espelhável, precisa de satisfazer as seguintes condições:
    • Os nomes das colunas não contêm nenhum dos seguintes caracteres: [ ;{}\n\t=()]
    • Os tipos de colunas são um dos seguintes tipos:
      • 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
    • A tabela não é uma exibição, vista materializada, tabela estrangeira, tabela toast ou tabela particionada
    • A tabela tem uma chave primária ou um índice único, não anulável e não parcial. Se estes requisitos não forem cumpridos, o espelhamento continuará a funcionar aplicando a identidade de réplica FULL, mas isso terá um impacto significativo no desempenho global da replicação e na utilização do WAL. Recomendamos ter uma chave primária ou um índice único para tabelas de tamanho não trivial.

Tabelas de acompanhamento

  • azure_cdc.tracked_publications: uma linha para cada base de dados espelhada existente no Fabric. Consulte esta tabela para entender o status de cada publicação.
Nome da Coluna Tipo Postgres Explicação
publication_id Oide Óide da publicação
caminho_de_destino enviar SMS Caminho para a zona de pouso no Fabric OneLake
destination_format azure_cdc.data_format Formato dos dados no Azure CDC
include_data bool Incluir ou não os dados de instantâneo iniciais na publicação
incluir_alterações bool Inclusão ou não de alterações na publicação
ativo bool Se a publicação está ativa
instantâneo_concluído bool Se o snapshot foi concluído
progresso_instantâneo Smallint Progresso da imagem instantânea
porcentagem_de_progresso_do_snapshot enviar SMS Porcentagem de progresso do snapshot
identificador_de_geração Int Identificador de geração
stream_start_lsn pg_lsn Número de sequência de log onde o fluxo de alterações começou
hora_de_início_da_transmissão carimbo de data/hora Carimbo de data/hora quando o fluxo de alterações foi iniciado
stream_stop_lsn pg_lsn Número de sequência de log onde o fluxo de alterações parou
tamanho_do_snapshot bigint Tamanho total do instantâneo (em bytes)
tempo_total Int Tempo total (em segundos) necessário para a publicação
  • azure_cdc.tracked_batches: uma linha para cada lote de alterações capturado e enviado ao Fabric OneLake. Consulta esta tabela para perceberes qual lote já foi capturado e carregado para o Fabric OneLake. Com a last_written_lsn coluna, pode perceber se uma determinada transação na sua base de dados de origem já foi enviada para o Fabric.
Nome Tipo Postgres Explicação
publication_id Oide Óide da publicação
completed_batch_id bigint Número sequencial (a partir de 1) do lote. Único por publicação
último_escrito_lsn pg_lsn LSN da última gravação deste lote
  • azure_cdc.tracked_tables: uma linha para cada tabela monitorizada em todas as publicações. Tem os seguintes campos para todas as tabelas publicadas, em todas as publicações. Se uma tabela fizer parte de duas publicações, será listada duas vezes.
Nome Tipo Postgres Explicação
publication_id Oide Óide da publicação
table_oid Oide Oid da tabela
sequence_number bigint Número de sequência do ficheiro gerado