Felsök Fabric-spegeldatabaser från Azure Database för PostgreSQL för flexibel server

Den här artikeln beskriver felsökningssteg för mirroring av Azure Database for PostgreSQL flexibel server.

Felsöka fel/varningsmeddelanden under tabellval för spegling

När du skapar en ny speglad databas kan du på sidan Välj data få viss visuell feedback om specifika tabeller i källdatabasen. Följande tabell innehåller en lista över potentiella problem, inklusive det meddelande som visas och en relaterad beskrivning av hur du löser problemet.

Statuskod Statustyp Message Description
SCHEMA_DOES_NOT_EXIST ERROR Schemat {} finns inte Det angivna schemat finns inte. Den kunde ha tagits bort medan Fabric hämtade relevant tabellinformation. Försök igen.
TABLE_DOES_NOT_EXIST ERROR Tabellen finns inte i schemat{}{}. Den angivna tabellen finns inte. Den kunde ha tagits bort medan Fabric hämtade relevant tabellinformation. Försök igen.
FORBIDDEN_CHARS_IN_COLUMN_NAME ERROR Tabell {}.{} innehåller otillåtna tecken i namn på kolumner {} Den angivna kolumnen har tecken som inte stöds i namnet. 1
UNSUPPORTED_DATA_TYPE ERROR Tabell {}.{} har datatypen som inte stöds i kolumnen {} En (eller flera) av tabellens kolumner har för närvarande datatyper som inte stöds. 3
FORBIDDEN_CHARS_IN_TABLE_NAME ERROR Tabell {}.{} innehåller otillåtna tecken i namn Tabellnamnet har tecken som inte stöds. 1
NOT_REGULAR_TABLE ERROR Tabell {}.{} är inte en vanlig tabell Tabelltyp stöds inte för speglingsfunktioner. 2
HAS_PRIMARY_KEY OK Tabell {}.{} har en primärnyckel Tabellen är en vanlig tabell och har en giltig primärnyckel som används för spegling.
HAS_UNIQUE_INDEX OK Tabell {}.{} har ett lämpligt unikt index Tabellen har ingen primärnyckel, men har ett icke-nullbart unikt index som ska användas för spegling. Nullbara unika index orsakar ett fel under replikeringsfasen och stöds inte.
NO_INDEX_FULL_IDENTITY VARNING Tabell {}.{} har inget lämpligt unikt index. Använda fullständig identitet Tabellen har ingen primärnyckel eller ett unikt index, så REPLICA IDENTITY FULL krävs för att stödja spegling, vilket kan orsaka prestandaproblem och ökad WAL-användning.

1 Objektidentifierare med blankstegstecken (' ') stöds inte.

2 Den här tabelltypen stöds inte för spegling. För närvarande stöds inte vyer, materialiserade vyer, externa tabeller och partitionerade tabeller. TimescaleDB-hypertabeller stöds inte heller för Fabric spegling.

3 En lista över datatyper som inte stöds finns i Begränsningar. Endast kolumner med följande typer stöds:

  • bigint
  • bigserial
  • boolean
  • bytea
  • character
  • character varying
  • date
  • double precision
  • integer
  • numeric
  • real
  • serial
  • oid
  • money
  • smallint
  • smallserial
  • text
  • time without time zone
  • time with time zone (* inte som primärnyckel)
  • timestamp without time zone
  • timestamp with time zone
  • uuid
  • xml
  • json
  • jsonb
  • inet
  • cidr
  • macaddr
  • macaddr8
  • tsvector
  • tsquery
  • int4range
  • int8range
  • numrange
  • tsrange
  • tstzrange
  • daterange
  • circle
  • line
  • lseg
  • box
  • path
  • point
  • polygon
  • interval

I Postgres anses två "time with time zone"-värden som motsvarar exakt samma ögonblick, men i olika tidszoner, vara olika. Till exempel: 06:24:00.59+05 och 05:24:00.59+04 motsvarar samma epoktid, men Postgres behandlar dem annorlunda.

Standard, obundna numeriska kolumner i källdatabasschemanen (utan definierad precision och skalning) konverteras till Decimal128(38, 0) innan de replikeras till OneLake-tabeller, i enlighet med SQL-standardkonventionen att ospecificerad skala innebär heltalsprecision.

DDL-åtgärder (Data Definition Language) som stöds i källdatabasen

  • Rename-kolumn: en kolumn med det nya namnet läggs till i den speglade tabellen i Fabric och innehåller data för nyligen infogade rader (för befintliga rader blir null). Den gamla kolumnen underhålls fortfarande med värden för de befintliga raderna (för nya rader är NULL).
  • Lägg till kolumn: den tillagda kolumnen visas i den speglade tabellen och innehåller data för nyligen infogade rader (för befintliga rader är NULL).
  • Ta bort kolumn: borttagen kolumn förblir synlig i den speglade tabellen och innehåller data för befintliga rader (för nya rader är NULL).
  • Ändra primärnyckel: speglingssessionen fortsätter regelbundet.

Andra DDL-åtgärder i källtabeller stöds för närvarande inte och kan orsaka replikeringsfel.

Ändringar i Fabric-kapacitet eller arbetsytor

Orsak Result Rekommenderad lösning
Systemkapaciteten har pausats/tagits bort Speglingsstopp 1. Återuppta eller tilldela kapacitet från Azure-portalen
2. Gå till Fabric-speglad databaspost. I verktygsfältet väljer du Stoppa replikering.
3. Starta replikeringen genom att välja Speglingsdatabas för det speglade objektet i Infrastrukturportalen.
Fabrickapaciteten återupptas Speglingen återupptas inte 1. Gå till Fabric-speglingsdatabasobjekt. I verktygsfältet väljer du Stoppa replikering.
2. Starta replikeringen genom att välja Speglingsdatabas för det speglade objektet i Infrastrukturportalen.
Arbetsytan har tagits bort Spegling stoppas automatiskt Om speglingen fortfarande är aktiv på Azure Database for PostgreSQL-servern, anslut som serveradministratör och kör följande kommando på din PostgreSQL-server: select azure_cdc.list_tracked_publications();. Använd sedan det returnerade publikationsnamnet och kör select azure_cdc.stop_publication(<publication_name>);.
Försökskapaciteten för nätverksarkitektur har gått ut. Spegling avslutas automatiskt Se utvärderingskapacitet för Fabric upphör att gälla.
Nätverkskapaciteten överskreds Paus av spegling Vänta tills överlagringstillståndet är över eller uppdatera kapaciteten. Läs mer om Åtgärder som du kan vidta för att återhämta dig vid överbelastningssituationer. Speglingen fortsätter när kapaciteten har återställts.
Några andra resursfel Spegling är inaktiverat För att säkerställa att dina beräkningsresurser inte påverkas och för att minimera påverkan på den flexibla Azure Database for PostgreSQL-servern inaktiveras spegling på eventuella beständiga resursfel.
Inställningen "Användare kan komma åt data som lagras i OneLake med appar utanför Fabric" inaktiverad "Replikator – tabeller kan inte nå replikeringsstatus" Aktivera hyresgästsinställningen Användare kan komma åt data som lagras i OneLake med appar utanför Fabric.

SQL-frågor för felsökning

Om du har speglingsproblem ansluter du till källservern Azure Database for PostgreSQL och utför dessa kontroller med hjälp av systemvyer och funktioner för att verifiera konfigurationen.

  1. Kör följande kommando för att validera om alla förutsättningar är uppfyllda innan du startar CDC-speglingen. Den här funktionen kontrollerar olika system- och konfigurationskrav för att säkerställa att servern är redo för CDC-åtgärder.
-- 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"}]

Returnerar:(status text, data jsonb)

  • status: Övergripande status – OK om alla kontroller godkänns, ERROR om någon kontroll misslyckas
  • data: JSONB-matris som innehåller detaljerade statusposter med status, status_codeoch valfritt details

Statuskoder:

Statuskod Nivå Description
IDENTITET_INTE_KONFIGURERAD ERROR Autentiseringsuppgifterna för service principal är inte konfigurerade (azure.service_principal_id eller azure.service_principal_tenant_id GUC-inställningar inte har ställts in)
CDC_ADMIN_ROLE_NOT_EXISTS ERROR Den azure_cdc_admin rollen finns inte i databasen
ANVÄNDARE_INTE_CDC_ADMINISTRATÖR ERROR Den aktuella användaren har inte rollen azure_cdc_admin
Inget skapandeprivilegium på databasen ERROR Den aktuella användaren saknar CREATE-behörighet i databasen
PUBLIKATIONSGRÄNS NÅDD ERROR Maximalt antal publikationer (1) har nåtts för databasen
SERVER_I_ÅTERHÄMTNING ERROR Servern är en väntelägesreplik i återställningsläge (CDC-spegling stöds inte i väntelägen)
MAX_WORKER_PROCESSES_TOO_LOW ERROR max_worker_processes ligger under det rekommenderade tröskelvärdet (13)
  1. Kör följande fråga för att kontrollera om tabeller i källdatabasen är berättigade till replikering. Undantar systemscheman (pg_catalog, information_schema, pg_toast) och tilläggsägda tabeller.
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"}]

Returnerar: Uppsättning av (table_schema text, table_name text, mirroring_status text, mirroring_data jsonb)

  • table_schema: Tabellens schemanamn
  • table_name: Tabellens namn
  • mirroring_status: Övergripande status – OK, WARNINGeller ERROR
  • mirroring_data: JSONB-matris som innehåller detaljerade statusposter med status, status_codeoch valfritt details

Statuskoder:

Statuskod Nivå Description
SCHEMA_DOES_NOT_EXIST ERROR Det angivna schemat finns inte
TABELL_EXISTERAR_INTE ERROR Den angivna tabellen finns inte i schemat
FORBIDDEN_CHARS_IN_COLUMN_NAME ERROR Kolumnnamn innehåller otillåtna tecken (t.ex. mellanslag)
FÖRBJUDNA_TECKEN_I_TABELLNAMN ERROR Tabellnamn innehåller otillåtna tecken
UNSUPPORTED_DATA_TYPE VARNING Tabellen har kolumner med datatyper som inte stöds
OEUNDERSÖTT_TYP_I_REPLIKATIDENTITET ERROR Datatypen stöds inte i replikidentitetskolumner (när det inte finns något unikt index)
INTE_REGELBUNDEN_TABELL ERROR Tabellen är inte en vanlig, permanent tabell (t.ex. vy, temporär, partition)
NOT_TABLE_OWNER ERROR Den aktuella användaren är inte ägare till tabellen
HAR_PRIMÄRNYCKEL OK Tabellen har en primärnyckel
HAS_UNIQUE_INDEX OK Tabellen har ett lämpligt unikt index
NO_INDEX_FULL_IDENTITY VARNING Inget lämpligt unikt index; fullständig radidentitet används (kan påverka prestanda)
  1. Kör följande fråga för att returnera fel och problem som identifierats under replikeringsåtgärder, inklusive systemomfattande fel, publiceringsspecifika fel och fel per tabell.
-- 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');

Parameters:

  • db_name (text): Databasnamn
  • pub_name (text): Publikationsnamn

Uppförande:

  • När det anropas med tomma strängar för båda parametrarna (azure_cdc.get_health_status('', '')): Returnerar endast systemomfattande fel (feltypen 'S').
  • När det anropas med giltiga databas- och publikationsnamn: Returnerar både systemomfattande fel och publikations-/tabellspecifika fel för den angivna publikationen.

Returnerar: En uppsättning av (error_time timestamptz, schema_name text, table_name text, error_type char(1), error_code text, params jsonb)

Feltyper:

Feltyp Description
S Systemomfattande fel
P Publikationsspecifikt fel
T Tabellspecifikt fel

Felkoder:

Felkod Typ Description
CDC_ERR_SYS_MAX_ANTAL_ARBETARE_NÅTT S Maximalt antal arbetare har nåtts
CDC_ERR_SYS_MAX_ANTAL_PUBLIKATIONER_NÅDD S Maximalt antal publikationer för databasen har nåtts
CDC_ERR_SYS_ONELAKE_BEHÖRIGHET_NEKAD S Behörighet nekad för OneLake-åtgärd
CDC_ERR_SYS_ONELAKE_ARTIFACT_DOES_NOT_EXIST S OneLake-artefakten hittades inte
CDC_ERR_SYS_ONELAKE_COMM_FAILED S OneLake-kommunikationen misslyckades
CDC_ERR_SYS_ONELAKE_BAD_REQUEST S Felaktig begäran till OneLake
CDC_ERR_PUB_SNAPSHOT_TIMEOUT P Ögonblicksbilden är inte klar efter tidsgränsen
CDC_ERR_PUB_SNAPSHOT_WORKER_TIMEOUT P Tidsgräns för ögonblicksbildsarbetare för en specifik tabell
CDC_ERR_PUB_ONELAKE_PERMISSION_DENIED (Åtkomst nekad) P Behörighet nekad för OneLake-åtgärd
CDC_ERR_PUB_ONELAKE_ARTIFACT_DOES_NOT_EXIST - Artefakten finns inte. P OneLake-artefakten hittades inte
CDC_ERR_PUB_ONELAKE_COMM_FAILED P OneLake-kommunikationen misslyckades
Maxantalet arbetare för CDC_PUB har nåtts P Maximalt antal arbetare som har nåtts för publicering
CDC_ERR_PUB_ONELAKE_BAD_REQUEST P Felaktig begäran till OneLake
CDC_ERR_PUB_FÖR_MÅNGA_FEL P För många fel vid publiceringsbearbetning
CDC_ERR_TRUNCERING_AV_TABELL_STÖDS_INTE T Trunkeringsåtgärden stöds inte (kan orsaka datainkonsekvens)
  1. Kör följande fråga för att kontrollera om publikationen har skapats korrekt och att replikeringsändringarna flyter korrekt.

    select * from azure_cdc.tracked_publications;
    

    Kontrollera om publikationen är aktiv och ögonblicksbilden har genererats. Du kan också kontrollera om efterföljande ändringsbatch har genererats genom att fråga:

    select * from azure_cdc.tracked_batches;
    
  2. azure_cdc.tracked_publications Om vyn inte visar några förlopp vid bearbetning av inkrementella ändringar kör du följande SQL-fråga för att kontrollera om det finns några rapporterade problem:

    SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';
    
  3. Om inga problem rapporteras kör du följande kommando för att granska den aktuella konfigurationen av den speglade PostgreSQL-databasen. Bekräfta att den har aktiverats korrekt.

    SELECT * FROM pg_replication_slots;
    

    De nyckelkolumner som ska sökas efter här är slot_name och active. Alla värden förutom t (true) indikerar ett potentiellt problem.

  4. Kontakta supporten om felsökning krävs.

Hanterad identitet

Den systemtilldelade hanterade identiteten (SAMI) för den flexibla Azure Database for PostgreSQL-servern måste vara aktiverad och måste vara den primära identiteten. Mer information finns i Systemtilldelad hanterad identitet för flexibel PostgreSQL-server.

Om SAMI-inställningsstatusen senare inaktiveras och sedan aktiveras igen efter aktiveringen, misslyckas speglingen av Azure Database for PostgreSQL– flexibel server till Fabric OneLake.

Kontrollera att SAMI är aktiverat med följande fråga: show azure.service_principal_id;

SAMI-behörigheter

Ta inte bort bidragsgivarens behörigheter för Azure Database for PostgreSQL System Assigned Managed Identity (SAMI) på Fabric speglingsdatabasobjekt.

Om du av misstag tar bort SAMI-behörigheter fungerar spegling av flexibel server i Azure Database for PostgreSQL inte som förväntat. Inga nya data kan speglas från källdatabasen.

Om du tar bort Azure Database for PostgreSQL–SAMI-behörigheter för flexibel server eller om behörigheter inte har konfigurerats korrekt använder du följande steg.

  1. Lägg till den flexibla servern SAMI som användare genom att välja ellipsalternativet ... på det speglade databassobjektet.
  2. Välj alternativet Hantera behörigheter .
  3. Ange namnet på den flexibla Azure Database for PostgreSQL-servern. Ange läs- och skrivbehörigheter .