Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
bigintbigserialbooleanbyteacharactercharacter varyingdatedouble precisionintegernumericrealserialoidmoneysmallintsmallserialtexttime without time zone-
time with time zone(* inte som primärnyckel) timestamp without time zonetimestamp with time zoneuuidxmljsonjsonbinetcidrmacaddrmacaddr8tsvectortsqueryint4rangeint8rangenumrangetsrangetstzrangedaterangecirclelinelsegboxpathpointpolygoninterval
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.
- 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 –OKom alla kontroller godkänns,ERRORom någon kontroll misslyckas -
data: JSONB-matris som innehåller detaljerade statusposter medstatus,status_codeoch valfrittdetails
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) |
- 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,WARNINGellerERROR -
mirroring_data: JSONB-matris som innehåller detaljerade statusposter medstatus,status_codeoch valfrittdetails
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) |
- 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) |
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;azure_cdc.tracked_publicationsOm 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';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_nameochactive. Alla värden förutomt(true) indikerar ett potentiellt problem.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.
- Lägg till den flexibla servern SAMI som användare genom att välja ellipsalternativet
...på det speglade databassobjektet. - Välj alternativet Hantera behörigheter .
- Ange namnet på den flexibla Azure Database for PostgreSQL-servern. Ange läs- och skrivbehörigheter .