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.
Este artigo aborda as etapas de solução de problemas para replicar servidores flexíveis do Azure Database para PostgreSQL.
Solucionar problemas de mensagens de erro/aviso durante a seleção da tabela para espelhamento
Ao criar um novo banco de dados espelhado, na página Escolher dados , você poderá receber alguns comentários visuais sobre tabelas específicas no banco de dados de origem. A tabela a seguir fornece uma lista de possíveis problemas, incluindo a mensagem exibida e a descrição relacionada sobre como resolver o problema.
| Código de status | Tipo de status | Message | Description |
|---|---|---|---|
SCHEMA_DOES_NOT_EXIST |
ERRO | O esquema {} não existe | Determinado esquema não existe. Poderia ter sido removido enquanto Fabric estava obtendo informações relevantes da tabela. Repita. |
TABLE_DOES_NOT_EXIST |
ERRO | No esquema {}, a tabela {} não existe. | Determinada tabela não existe. Poderia ter sido removido enquanto Fabric estava obtendo informações relevantes da tabela. Repita. |
FORBIDDEN_CHARS_IN_COLUMN_NAME |
ERRO | Tabela {}.{} contém caracteres proibidos em nome de colunas {} | A coluna tem um caractere não suportado no nome. 1 |
UNSUPPORTED_DATA_TYPE |
ERRO | Tabela {}.{} tem tipo de dado não suportado na coluna {} | Uma (ou mais) colunas da tabela têm tipos de dados sem suporte no momento. 3 |
FORBIDDEN_CHARS_IN_TABLE_NAME |
ERRO | Tabela {}.{} contém caracteres proibidos no nome | O nome da tabela tem caracteres sem suporte. 1 |
NOT_REGULAR_TABLE |
ERRO | Tabela {}.{} não é uma tabela regular | Tipo de tabela não é compatível com espelhamento. 2 |
HAS_PRIMARY_KEY |
OKEY | Tabela {}.{} tem uma chave primária | A tabela é uma tabela regular e tem uma chave primária válida usada para espelhamento. |
HAS_UNIQUE_INDEX |
OKEY | Tabela {}.{} tem um índice exclusivo adequado | A tabela não tem uma chave primária, mas tem um índice exclusivo não anulável que deve ser usado para espelhamento. Índices exclusivos anuláveis causarão um erro durante a fase de replicação e não terão suporte. |
NO_INDEX_FULL_IDENTITY |
AVISO | A tabela {}.{} não tem um índice exclusivo adequado. Usando a identidade completa | A tabela não tem uma chave primária ou um índice exclusivo, portanto REPLICA IDENTITY FULL é necessário para dar suporte ao espelhamento, o que pode causar problemas de desempenho e um uso adicional de WAL. |
1 Não há suporte para identificadores de objeto com um caractere de espaço (' ').
2 Este tipo de tabela não tem suporte para espelhamento. Atualmente, não há suporte para exibições, exibições materializadas, tabelas estrangeiras e tabelas particionadas. Hipertabelas do TimescaleDB também não têm suporte para o espelhamento de Fabric.
3 Para obter uma lista de tipos de dados sem suporte, consulte Limitações. Há suporte apenas para colunas com os seguintes tipos:
bigintbigserialbooleanbyteacharactercharacter varyingdatedouble precisionintegernumericrealserialoidmoneysmallintsmallserialtexttime without time zone-
time with time zone(* não como uma chave primária) timestamp without time zonetimestamp with time zoneuuidxmljsonjsonbinetcidrmacaddrmacaddr8tsvectortsqueryint4rangeint8rangenumrangetsrangetstzrangedaterangecirclelinelsegboxpathpointpolygoninterval
No Postgres, dois valores de "hora com fuso horário" que correspondem exatamente ao mesmo momento, mas em fusos horários diferentes, são tratados como distintos. Por exemplo: 06:24:00.59+05 e 05:24:00.59+04 correspondem ao mesmo tempo de época, mas o Postgres os trata de forma diferente.
Colunas numéricas sem restrições em esquemas de bancos de dados de origem (sem precisão e escala definidas) são convertidas em Decimal128(38, 0) antes de serem replicadas em tabelas OneLake, alinhando-se à convenção padrão do SQL, onde a escala não especificada significa precisão de número inteiro.
Operações de DDL (linguagem de definição de dados) com suporte no banco de dados de origem
- Renomear coluna: uma coluna com o novo nome é adicionada à tabela espelhada no Fabric e contém dados para linhas recém-inseridas (para linhas existentes é NULL). A coluna antiga ainda é mantida com valores para as linhas existentes (para as novas linhas, são NULL).
- Adicionar coluna: a coluna adicionada é visível na tabela espelhada e contém dados para linhas recém-inseridas (para linhas existentes são NULL).
- Remover coluna: a coluna removida permanece visível na tabela espelhada e contém dados para linhas existentes (nas novas linhas, os dados são NULL).
- Alterar chave primária: a sessão de espelhamento continua regularmente.
No momento, não há suporte para qualquer outra operação DDL em tabelas de origem e pode causar falhas de replicação.
Alterações na capacidade ou no espaço de trabalho do Fabric
| Motivo | Resultado | Resolução recomendada |
|---|---|---|
| Capacidade da malha pausada/excluída | Interrupção do espelhamento | 1. Retomar ou atribuir capacidade do portal do Azure 2. Vá para o item espelhado do banco de dados do Fabric. Na barra de ferramentas, selecione Parar replicação. 3. Inicie a replicação selecionando o banco de dados Espelho para o item espelhado no portal do Fabric. |
| Capacidade da malha retomada | O espelhamento não será retomado | 1. Vá para o item espelhado do banco de dados do Fabric. Na barra de ferramentas, selecione Parar replicação. 2. Inicie a replicação selecionando o banco de dados Espelho para o item espelhado no portal do Fabric. |
| Área de trabalho excluída | O espelhamento é interrompido automaticamente | Se o espelhamento ainda estiver ativo no servidor flexível do Banco de Dados do Azure para PostgreSQL, conecte-se usando um administrador de servidor e execute os seguintes comandos no servidor PostgreSQL: select azure_cdc.list_tracked_publications();, em seguida, use o nome da publicação retornado e execute select azure_cdc.stop_publication(<publication_name>); |
| A capacidade de avaliação da Fabric expirou | O espelhamento é interrompido automaticamente | Veja "expiração da capacidade de teste do Fabric". |
| Capacidade de malha excedida | Pausas de espelhamento | Aguarde até que o estado de sobrecarga termine ou atualize sua capacidade. Saiba mais em Ações que você pode executar para se recuperar de situações de sobrecarga. O espelhamento continua assim que a capacidade é recuperada. |
| Quaisquer outros erros de recursos | O espelhamento está desabilitado | Para garantir que os recursos de computação não sejam afetados e minimizar o impacto no servidor flexível do Banco de Dados do Azure para PostgreSQL, o espelhamento desabilita quaisquer erros de recurso persistentes. |
| A configuração "Os usuários podem acessar dados armazenados no OneLake com aplicativos externos ao Fabric" está desabilitada. | "Replicador – Tabelas não conseguem alcançar o estado de replicação" | Habilite a configuração do locatário Os usuários podem acessar dados armazenados no OneLake com aplicativos externos ao Fabric. |
Consultas SQL para solução de problemas
Se você estiver enfrentando problemas de espelhamento, conecte-se ao servidor de Banco de Dados do Azure para PostgreSQL de origem e execute essas verificações usando exibições e funções do sistema para validar a configuração.
- Execute a consulta seguinte para verificar se todos os pré-requisitos são atendidos antes de iniciar o espelhamento CDC. Essa função verifica vários requisitos de sistema e configuração para garantir que o servidor esteja pronto para operações CDC.
-- Check if all prerequisites are met
SELECT * FROM azure_cdc.check_prerequisites();
-- Example output when all checks pass (on mock mode with identity configured):
status | data
--------+----------------------------------------------------------------------------------------------------------------------------------
ERROR | [{"status": "ERROR", "details": {"current_value": "12", "required_value": "13"}, "status_code": "MAX_WORKER_PROCESSES_TOO_LOW"}]
-- Example output on standby replica:
status | data
--------+---------------------------------------------------------------------------------------------------
ERROR | [{"status": "ERROR", "status_code": "SERVER_IN_RECOVERY"}]
-- Example output when identity not configured:
status | data
--------+---------------------------------------------------------------------
ERROR | [{"status": "ERROR", "status_code": "IDENTITY_NOT_CONFIGURED"}]
Retorna:(status text, data jsonb)
-
status: status geral -OKse todas as verificações forem aprovadas,ERRORse alguma verificação falhar -
data: matriz JSONB que contém entradas de status detalhadas comstatus,status_codee opcionaldetails
Códigos de status:
| Código de status | Level | Description |
|---|---|---|
| IDENTIDADE_NÃO_CONFIGURADA | ERRO | As credenciais da entidade de serviço não estão configuradas (azure.service_principal_id ou azure.service_principal_tenant_id GUCs não definidos) |
| CDC_ADMIN_ROLE_NOT_EXISTS (Função de administrador CDC não existe) | ERRO | A função azure_cdc_admin não existe no banco de dados |
| USUÁRIO_NÃO_É_ADMINISTRADOR_DO_CDC | ERRO | O usuário atual não tem a função azure_cdc_admin |
| SEM_PRIVILÉGIO_PARA_CRIAR_NO_BANCO_DE_DADOS | ERRO | O usuário atual não tem privilégio CREATE no banco de dados |
| LIMITE_DE_PUBLICAÇÃO_ATINGIDO | ERRO | O número máximo de publicações (1) foi atingido para o banco de dados |
| SERVIDOR_EM_RECUPERAÇÃO | ERRO | O servidor é uma réplica em espera em modo de recuperação (espelhamento CDC não é suportado em réplicas em espera) |
| MAX_WORKER_PROCESSES_TOO_LOW | ERRO | max_worker_processes está abaixo do limite recomendado (13) |
- Execute a consulta a seguir para validar se as tabelas no banco de dados de origem estão qualificadas para replicação. Exclui esquemas do sistema (
pg_catalog,information_schema,pg_toast) e tabelas pertencentes a extensões.
SELECT * FROM azure_cdc.get_all_tables_mirror_status();
table_schema | table_name | mirroring_status | mirroring_data
--------------+------------+------------------+------------------------------------------------------
public | customers | OK | [{"status": "OK", "status_code": "HAS_PRIMARY_KEY"}]
public | orders | OK | [{"status": "OK", "status_code": "HAS_UNIQUE_INDEX"}]
public | logs | WARNING | [{"status": "WARNING", "status_code": "NO_INDEX_FULL_IDENTITY"}]
Retorna: Conjunto de (table_schema text, table_name text, mirroring_status text, mirroring_data jsonb)
-
table_schema: nome do esquema da tabela -
table_name: nome da tabela -
mirroring_status: status geral -OK,WARNING, ouERROR -
mirroring_data: matriz JSONB que contém entradas de status detalhadas comstatus,status_codee opcionaldetails
Códigos de status:
| Código de status | Level | Description |
|---|---|---|
| ESQUEMA_NÃO_EXISTE | ERRO | O esquema especificado não existe |
| TABELA_NÃO_EXISTE | ERRO | A tabela especificada não existe no esquema |
| FORBIDDEN_CHARS_IN_COLUMN_NAME | ERRO | Os nomes de coluna contêm caracteres proibidos (por exemplo, espaços) |
| FORBIDDEN_CHARS_IN_TABLE_NAME (Caracteres_Proibidos_Na_Nome_Tabela) | ERRO | O nome da tabela contém caracteres proibidos |
| UNSUPPORTED_DATA_TYPE | AVISO | A tabela tem colunas com tipos de dados sem suporte |
| UNSUPPORTED_TYPE_IN_REPLICA_IDENTITY | ERRO | Tipo de dados não suportado em colunas de identidade de réplica (quando nenhum índice único existe) |
| TABELA_NÃO_REGULAR | ERRO | Tabela não é uma tabela regular e permanente (por exemplo, visão, temporária, partição) |
| NOT_TABLE_OWNER | ERRO | O usuário atual não é o proprietário da tabela |
| TEM_CHAVE_PRIMÁRIA | OKEY | A tabela tem uma chave primária |
| TEM_ÍNDICE_ÚNICO | OKEY | A tabela tem um índice exclusivo adequado |
| NO_INDEX_FULL_IDENTITY | AVISO | Nenhum índice exclusivo adequado; identidade de linha completa será usada (pode afetar o desempenho) |
- Execute a consulta a seguir para retornar erros e problemas detectados durante operações de replicação, incluindo erros em todo o sistema, erros específicos de publicação e erros por tabela.
-- Get only system-wide errors
SELECT * FROM azure_cdc.get_health_status('', '');
-- Get system-wide errors and publication-specific errors
SELECT * FROM azure_cdc.get_health_status('my_database', 'my_publication');
Parâmetros:
-
db_name(texto): nome do banco de dados -
pub_name(texto): nome da publicação
Comportamento:
- Quando chamado com cadeias de caracteres vazias para ambos os parâmetros (
azure_cdc.get_health_status('', '')): retorna somente erros em todo o sistema (tipo de erro 'S'). - Quando chamado com nomes válidos de banco de dados e publicação: retorna erros em todo o sistema e erros específicos de publicação/tabela para a publicação especificada.
Retorna: Conjunto de (error_time timestamptz, schema_name text, table_name text, error_type char(1), error_code text, params jsonb)
Tipos de erro:
| Tipo de erro | Description |
|---|---|
| S | Erro em todo o sistema |
| P | Erro específico da publicação |
| T | Erro específico da tabela |
Códigos de erro:
| Código de erro | Tipo | Description |
|---|---|---|
| CDC_ERR_SYS_MAX_NUMBER_OF_WORKERS_REACHED (Número máximo de trabalhadores do sistema atingido) | S | Número máximo de trabalhadores atingidos |
| CDC_ERR_SYS_NUMERO_MAXIMO_DE_PUBLICAÇÕES_ATINGIDO | S | Número máximo de publicações para o banco de dados atingido |
| CDC_ERR_SYS_ONELAKE_PERMISSAO_NEGADA | S | Permissão negada para a ação do OneLake |
| CDC_ERR_SYS_ONELAKE_ARTIFACT_DOES_NOT_EXIST | S | Artefato OneLake não encontrado |
| CDC_ERR_SYS_ONELAKE_COMM_FAILED - Falha na comunicação com o sistema Onelake. | S | Falha na comunicação do OneLake |
| CDC_ERR_SYS_ONELAKE_BAD_REQUEST | S | Solicitação incorreta para o OneLake |
| CDC_ERR_PUB_SNAPSHOT_TIMEOUT (Erro de Tempo de Espera da Publicação de Snapshot do CDC) | P | Instantâneo não pronto após o tempo limite |
| CDC_ERR_PUB_SNAPSHOT_WORKER_TIMEOUT | P | Tempo limite do trabalho de instantâneo para uma tabela específica |
| CDC_ERR_PUB_ONELAKE_PERMISSION_DENIED (Permissão negada para publicação no OneLake) | P | Permissão negada para a ação do OneLake |
| CDC_ERR_PUB_ONELAKE_ARTIFACT_DOES_NOT_EXIST | P | Artefato OneLake não encontrado |
| CDC_ERR_PUB_ONELAKE_COMM_FAILED | P | Falha na comunicação do OneLake |
| CDC_ERR_PUB_MAX_NUMBER_OF_WORKERS_REACHED (Número máximo de trabalhadores atingido) | P | Número máximo de trabalhadores atingidos para publicação |
| CDC_ERR_PUB_ONELAKE_BAD_REQUEST | P | Solicitação incorreta no OneLake |
| CDC_ERR_PUB_TOO_MANY_ERRORS (Erro: Publicação com muitos erros) | P | Muitos erros durante o processamento da publicação |
| CDC_ERR_TABLE_TRUNCATE_NOT_SUPPORTED | T | Operação de truncamento sem suporte (pode causar inconsistência de dados) |
Execute a consulta a seguir para verificar se a publicação foi criada corretamente e as alterações de replicação fluem corretamente:
select * from azure_cdc.tracked_publications;Verifique se a publicação está ativa e se o instantâneo foi gerado. Você também pode verificar se os lotes de alteração subsequentes foram gerados consultando:
select * from azure_cdc.tracked_batches;Se a exibição
azure_cdc.tracked_publicationsnão mostrar nenhum progresso no processamento de alterações incrementais, execute a seguinte consulta SQL para verificar se há algum problema relatado:SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';Se não houver nenhum problema relatado, execute o comando a seguir para examinar a configuração atual do banco de dados PostgreSQL espelhado. Confirme se ele foi habilitado corretamente.
SELECT * FROM pg_replication_slots;As colunas de chave a serem procuradas aqui são
slot_nameeactive. Qualquer valor alémt(true) indica um possível problema.Entre em contato com o suporte se a solução de problemas for necessária.
Identidade gerenciada
A SAMI (Identidade Gerenciada Atribuída pelo Sistema) do servidor flexível do Banco de Dados do Azure para PostgreSQL precisa ser habilitada e deve ser a identidade primária. Para obter mais informações, consulte a identidade gerenciada atribuída pelo sistema para o servidor flexível postgreSQL.
Após a habilitação, se o status de configuração do SAMI for posteriormente desabilitado e depois habilitado novamente, o espelhamento do servidor flexível do Banco de Dados do Azure para PostgreSQL no Fabric OneLake falhará.
Verifique se o SAMI está habilitado com a seguinte consulta: show azure.service_principal_id;
Permissões SAMI
Não remova as permissões de colaborador do SAMI (System Assigned Managed Identity) do servidor flexível do Banco de Dados do Azure para PostgreSQL no item de banco de dados espelhado do Fabric.
Se você remover permissões SAMI, o Espelhamento do Banco de Dados do Azure para o servidor flexível PostgreSQL não funcionará conforme o esperado, acidentalmente. Nenhum dado novo pode ser espelhado do banco de dados de origem.
Se você remover permissões SAMI do Azure Database para servidor flexível PostgreSQL ou as permissões não estiverem configuradas corretamente, use os passos a seguir.
- Adicione o servidor flexível SAMI como um usuário selecionando a opção de reticências
...no item de banco de dados espelhado. - Selecione a opção Gerenciar Permissões .
- Insira o nome do servidor flexível do PostgreSQL no Banco de Dados do Azure. Forneça permissões de leitura e gravação.