Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Espelhamento no Fabric (agora em disponibilidade geral) proporciona uma experiência fácil para evitar ETL (Extract Transform Load) complexo e integrar seu Banco de Dados do Azure para PostgreSQL existente com o restante dos seus dados no Microsoft Fabric. Você pode replicar continuamente o Banco de Dados do Azure para PostgreSQL diretamente no Fabric OneLake. No Fabric, você pode desbloquear poderosos cenários 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 de disponibilidade geral mais recente dos componentes de espelhamento. Os servidores existentes são atualizados progressivamente como parte dos próximos ciclos de manutenção sem a necessidade de intervenção manual. Você não precisa desabilitar e reabilitar o espelhamento para receber atualizações.
Architecture
O espelhamento do Fabric no Banco de Dados do Azure para PostgreSQL é baseado em conceitos como replicação lógica e padrão de design de Captura de Dados de Alterações (CDC).
Depois de estabelecer o espelhamento do Fabric para um banco de dados em uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL, um processo em segundo plano do PostgreSQL criará um instantâneo inicial das tabelas selecionadas para serem espelhadas. Ele envia o instantâneo no formato Parquet para uma zona de pouso do Fabric OneLake. Um processo do Replicador em execução no Fabric usa esses arquivos de instantâneo iniciais e cria tabelas Delta no artefato de banco de dados espelhado.
O banco de dados de origem captura as alterações subsequentes aplicadas às tabelas selecionadas. Ele transfere essas alterações para a zona de aterrissagem do OneLake em lotes, a fim de aplicá-las às tabelas Delta correspondentes no artefato do banco de dados espelhado.
O que é o CDC (Change Data Capture)?
O CDC (Change Data Capture) é um método que permite que os aplicativos detectem e capturem alterações feitas em um banco de dados.
Ele não depende de consultas SQL explícitas para controlar as 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 assinar esse fluxo para monitorar as alterações, focando em bancos de dados específicos, tabelas individuais ou até mesmo subconjuntos de colunas dentro de uma tabela.
Para espelhamento do Fabric, o padrão CDC é implementado em uma extensão proprietária do PostgreSQL chamada azure_cdc. O painel 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 habilitação do espelhamento do Fabric.
Extensão CDC (Captura de Dados de Alterações do Azure)
O CDC do Azure é uma extensão do PostgreSQL que aprimora os recursos de decodificação lógica.
Ele interpreta e transforma dados do 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 CDC do Azure é uma camada sobre o plug-in interno de decodificação lógica do PostgreSQL. pgoutput
O CDC do Azure exporta instantâneos e modificações de tabela como arquivos Parquet e os copia para uma zona de destino do OneLake do Microsoft Fabric para processamento subsequente.
Habilitar o espelhamento do Fabric no portal do Azure
O espelhamento do Fabric no portal do Azure para uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL permite replicar seus bancos de dados PostgreSQL no Microsoft Fabric. Esse recurso ajuda você a integrar seus dados diretamente a 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 Banco de Dados do Azure para PostgreSQL dá suporte ao PostgreSQL 14 e posterior para o espelhamento do Fabric.
Pré-requisitos
Antes de usar o espelhamento do Fabric em uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL, você precisa configurar vários pré-requisitos.
-
A SAMI (Identidade Gerenciada) atribuída pelo sistema deve estar habilitada.
- O CDC do Azure usa essa identidade para autenticar as comunicações com o Fabric OneLake, copiar instantâneos iniciais e alterar lotes para a zona de destino.
Você configura pré-requisitos adicionais por meio de um fluxo de trabalho de habilitação dedicado descrito na seção a seguir. Esses pré-requisitos são:
wal_level parâmetro de servidor deve ser definido como "lógico".
- Habilita a replicação lógica para o servidor de origem.
max_worker_processes parâmetro de 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 nos bancos de dados selecionados para espelhamento (o que requer reinicialização).
Uma nova página está disponível no portal do Azure para automatizar essas configurações de pré-requisito no servidor de origem.
Selecione Introdução para iniciar o fluxo de trabalho de habilitação.
Esta página mostra o status atual dos pré-requisitos necessários. Se a SAMI (Identidade Gerenciada Atribuída pelo Sistema) não estiver habilitada para este servidor, selecione o link a ser redirecionado para a página em que você pode habilitar esse recurso.
Quando terminar, selecione os bancos de dados para habilitar o espelhamento do Fabric (até três por padrão, mas você pode aumentar esse limite alterando o parâmetro de servidor max_mirrored_databases ) e selecione Preparar.
O fluxo de trabalho apresenta um pop-up de Reiniciar Servidor. Ao selecionar Reiniciar, inicie o processo. O fluxo de trabalho automatiza todas as etapas de configuração restantes. Você pode começar a criar seu banco de dados espelhado a partir da interface do usuário do Fabric.
Criar uma função de banco de dados para Espelhamento do Fabric
Em seguida, você precisa fornecer ou criar uma função do PostgreSQL para que o serviço do Fabric se conecte ao servidor flexível do Banco de Dados do Azure para PostgreSQL.
Você pode realizar essa tarefa especificando uma função de banco de dados para se conectar ao sistema de origem.
Observação
As funções do Entra ID e do banco de dados local têm suporte para conectar o espelhamento do Fabric ao Banco de Dados do Azure para PostgreSQL. Selecione o método de autenticação que melhor se ajusta às suas finalidades.
Usar uma função do banco de dados
Conecte-se ao Banco de Dados do Azure para PostgreSQL usando o Visual Studio Code ou pgAdmin. Conecte-se a uma entidade de segurança que é membro da função
azure_pg_admin.Crie uma função do PostgreSQL chamada
fabric_user. Você pode escolher qualquer nome para essa função. Forneça sua própria senha forte. Conceda as permissões necessárias para o espelhamento do Fabric no banco de dados. Execute o script de SQL a seguir para conceder as permissões deCREATEDB,CREATEROLE,LOGIN,REPLICATIONeazure_cdc_adminpara a nova função chamadafabric_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;O usuário de banco de dados que você criar também precisa ser
ownerdas tabelas a serem replicadas no banco de dados espelhado. Esse requisito significa que o usuário cria as tabelas ou altera a propriedade dessas tabelas usandoALTER TABLE <table name here> OWNER TO fabric_user;.- Ao alternar a propriedade para um novo usuário, talvez seja necessário conceder a esse usuário todos os privilégios no esquema
publicantes. Para obter mais informações sobre o gerenciamento de conta de usuário, consulte a documentação de gerenciamento de usuários do Banco de Dados do Azure para PostgreSQL, documentação do produto PostgreSQL para funções e privilégios de banco de dados, sintaxe GRANT e Privilégios.
- Ao alternar a propriedade para um novo usuário, talvez seja necessário conceder a esse usuário todos os privilégios no esquema
Importante
A omissão de uma das etapas de configuração de segurança anteriores faz com que as operações espelhadas subsequentes no portal do Fabric resultem em falha com uma mensagem de Internal error.
Parâmetros do Servidor
Esses parâmetros de servidor afetam diretamente o espelhamento no Fabric para o Banco de Dados do Azure para PostgreSQL e podem ser usados para otimizar o processo de replicação com o Fabric OneLake:
Azure.fabric_mirror_enabled: o padrão está desativado. Esse parâmetro especifica o sinalizador que indica se o espelhamento está habilitado no servidor. Ele é definido automaticamente no final do fluxo de trabalho de habilitaçã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 outras finalidades (replicação lógica).
max_wal_senders: o padrão é 10. Assim como acontece com o parâmetro anterior, usamos um
walprocesso de remetente por cada banco de dados espelhado, devendo aumentar o número desses processos ao espelhar mais bancos de dados.max_worker_processes: o padrão é 8. Após o instantâneo 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 trabalhadores que podem ser executados 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 poderão aumentar esse valor se precisarem espelhar mais de três bancos de dados neste 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 alteração em lotes), portanto, dependendo de quão ocupado o servidor está, você deve monitorar a utilização de recursos e escalar verticalmente seu tamanho de 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 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 do instantâneo inicial. Aumente isso para acelerar a criação de snapshot inicial 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 é de 16 MB. Tamanho máximo do buffer (em MB) para lotes de alteração. A tabela mostra que muitos dados são armazenados em buffer até esse ponto 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á-lo se quiser priorizar a taxa de transferência geral.
azure_cdc.change_batch_export_timeout: o padrão é 30. Tempo máximo de ociosidade (em segundos) entre mensagens de alteração de 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á-lo se quiser priorizar a taxa de transferência geral.
azure_cdc.parquet_compression: o padrão é ZSTD. Esse parâmetro é apenas para uso interno, portanto, você não deve modificá-lo.
azure_cdc.snapshot_buffer_size: o padrão é 1000. O tamanho máximo (em MB) do buffer de instantâneo inicial. De acordo com a tabela, muitos dados são bufferizados até este ponto antes de serem enviados ao Fabric. Lembre-se de que azure_cdc.snapshot_buffer_size*azure_cdc.max_snapshot_workers é o buffer de memória total usado durante o instantâneo inicial.
azure_cdc.snapshot_export_timeout: O valor padrão é de 180. Tempo máximo (em minutos) para exportar o instantâneo inicial. Se o tempo limite for excedido, será reiniciado automaticamente.
azure_cdc.prune_local_batches: O padrão é True. Se definido, remova os dados de lote do disco local, depois de carregados com êxito e reconhecidos pelo wal_sender.
Monitor
O monitoramento do espelhamento do Fabric nas instâncias do servidor flexível do Azure Database for PostgreSQL é essencial para garantir que o processo de espelhamento seja executado de maneira fluida e eficiente. Monitorando o status dos bancos de dados espelhados, você pode identificar possíveis problemas e executar ações corretivas.
Você pode usar várias funções e tabelas definidas pelo usuário para monitorar métricas CDC importantes nas instâncias de servidor flexível do Banco de Dados do Azure para PostgreSQL e identificar e corrigir problemas no processo de espelhamento para o Fabric.
Funções de monitoramento
A função para espelhamento do Fabric no Banco de Dados do Azure para PostgreSQL replica seus bancos de dados PostgreSQL diretamente no Microsoft Fabric, para que você possa usar cenários avançados de análise e integração de dados.
azure_cdc.list_tracked_publications(): para cada publicação na instância do servidor flexível de origem, retorna uma cadeia de caracteres separada por vírgulas que contém as seguintes informações
- publicationName (texto)
- includeData (bool)
- includeChanges (bool)
- active (bool)
- baseSnapshotDone (bool)
- generationId (int)
azure_cdc.publication_status('pub_name'): para cada publicação na origem, a instância do servidor flexível retorna uma cadeia de caracteres separada por vírgulas com as seguintes informações
- <status, start_lsn, stop_lsn, flush_lsn>.
- O status consiste em ["Nome do slot", "Nome de origem", "Caminho de destino dos dados de CDC", "Ativo", "Instantâneo concluído", "Percentual de progresso", "ID de geração", "ID do lote concluído", "ID do lote carregado", "Hora de início do CDC"]
azure_cdc.is_table_mirrorable('schema_name','table_name'): dado o nome do esquema e da tabela, retorna se a tabela é espelhável. Para que uma tabela seja espelhada, ela precisa atender às seguintes condições:
- Os nomes de coluna não contêm nenhum dos seguintes caracteres:
[ ;{}\n\t=()] - Os tipos de coluna são algum dos seguintes tipos:
bigintbigserialbooleanbytescharactercharacter varyingdatedouble precisionintegernumericrealserialoidmoneysmallintsmallserialtexttime without time zonetime with time zonetimestamp without time zonetimestamp with time zoneuuid
- A tabela não é uma exibição, uma exibição materializada, uma tabela estrangeira, uma tabela do sistema ou uma tabela particionada
- A tabela tem uma chave primária ou um índice exclusivo, não anulável e nãopartial. Se esses requisitos não forem atendidos, o Espelhamento ainda funcionará aplicando a identidade de réplica FULL, mas isso terá um impacto significativo no desempenho geral da replicação e na utilização do WAL. É recomendável ter uma chave primária ou um índice exclusivo para tabelas de tamanho nãotrivial.
- Os nomes de coluna não contêm nenhum dos seguintes caracteres:
Tabelas de monitoramento
- azure_cdc.tracked_publications: uma linha para cada banco de dados espelhado existente no Fabric. Consulte esta tabela para entender o status de cada publicação.
| Nome da Coluna | Tipo de Postgres | Explanation |
|---|---|---|
| publication_id | oid | Oid da publicação |
| caminho_de_destino | enviar SMS | Caminho para a zona de destino no Fabric OneLake |
| destination_format | azure_cdc.data_format | Formato dos dados no CDC do Azure |
| incluir_dados | bool | Se os dados de instantâneo iniciais devem ser incluídos na publicação |
| incluir_alterações | bool | Se deve incluir alterações na publicação |
| ativo | bool | Se a publicação está ativa |
| snapshot_done | bool | Se o instantâneo foi concluído |
| snapshot_progress | smallint | Progresso do instantâneo |
| percentual_de_progresso_do_snapshot | enviar SMS | Progresso percentual do instantâneo |
| identificador_de_geração | int | Identificador de geração |
| stream_start_lsn | pg_lsn | Número da sequência de logs em que o fluxo de alterações foi iniciado |
| tempo_início_stream | carimbo de data/hora | Carimbo de data/hora quando o fluxo de alterações foi iniciado |
| stream_stop_lsn | pg_lsn | Número da sequência de logs em que o fluxo de alterações foi interrompido |
| tamanho_do_instantâneo | bigint | Tamanho total do instantâneo (em bytes) |
| total_time | 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 para o Fabric OneLake. Consulte esta tabela para entender qual lote já foi capturado e carregado no Fabric OneLake. Com a
last_written_lsncoluna, você pode entender se uma determinada transação no banco de dados de origem já foi enviada ao Fabric.
| Nome | Tipo de Postgres | Explanation |
|---|---|---|
| publication_id | oid | Oid da publicação |
| completed_batch_id | bigint | Número de sequência (a partir de 1) do lote. Exclusivo para cada publicação |
| last_written_lsn | pg_lsn | LSN da última gravação deste lote |
- azure_cdc.tracked_tables: uma linha para cada tabela rastreada em todas as publicações. Possui os campos a seguir para todas as tabelas publicadas, em todas as publicações. Se uma tabela fizer parte de duas publicações, ela será listada duas vezes.
| Nome | Tipo de Postgres | Explanation |
|---|---|---|
| publication_id | oid | Oid da publicação |
| table_oid | oid | Identificador de objeto da tabela |
| sequence_number | bigint | número de sequência do arquivo gerado |