Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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.
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 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.
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
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.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 asCREATEDBpermissões ,CREATEROLE,LOGIN,REPLICATIONeazure_cdc_adminà nova função denominadafabric_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 utilizador da base de dados que criar também precisa de ser
owneruma das tabelas a replicar na base de dados espelhada. Este requisito significa que o utilizador cria as tabelas ou altera a propriedade dessas tabelas usandoALTER TABLE <table name here> OWNER TO fabric_user;.- Ao mudar a propriedade para um novo usuário, talvez seja necessário conceder a esse usuário todos os privilégios no
publicesquema antes. Para obter mais informações sobre o gerenciamento de contas de usuário, consulte a documentação de gerenciamento de usuários do Banco de Dados do Azure para PostgreSQL, a documentação do produto PostgreSQL para Funções e Privilégios de Banco de Dados, Sintaxe GRANT e Privilégios.
- Ao mudar a propriedade para um novo usuário, talvez seja necessário conceder a esse usuário todos os privilégios no
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
walprocesso 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:
bigintbigserialbooleanbytescharactercharacter varyingdatedouble precisionintegernumericrealserialoidmoneysmallintsmallserialtexttime without time zonetime with time zonetimestamp without time zonetimestamp with time zoneuuid
- 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.
- Os nomes das colunas não contêm nenhum dos seguintes caracteres:
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_lsncoluna, 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 |