Feilsøke strukturspeilede databaser fra Azure Database for PostgreSQL fleksibel server

Denne artikkelen dekker feilsøkingstrinn for speiling av Azure Database for PostgreSQL fleksibel server.

Feilsøke feil-/advarselsmeldinger under tabellvalg for speiling

Når du oppretter en ny speilet database, kan det hende du får visuell tilbakemelding om bestemte tabeller i kildedatabasen på siden Velg data . Tabellen nedenfor inneholder en liste over potensielle problemer, inkludert meldingen som vises, og relatert beskrivelse av hvordan du løser problemet.

Status kode Statustype Budskap Description
SCHEMA_DOES_NOT_EXIST FEIL Skjema {} eksisterer ikke Gitt skjema eksisterer ikke. Den kunne ha blitt fjernet mens Fabric hentet relevant tabellinformasjon. Prøve.
TABLE_DOES_NOT_EXIST FEIL I skjema {}finnes ikke tabellen {} . Gitt tabell eksisterer ikke. Den kunne ha blitt fjernet mens Fabric hentet relevant tabellinformasjon. Prøve.
FORBIDDEN_CHARS_IN_COLUMN_NAME FEIL Tabell {}.{} inneholder forbudte tegn i navn på kolonner {} Den gitte kolonnen har tegn som ikke støttes i navnet. 1
UNSUPPORTED_DATA_TYPE FEIL Tabell {}.{} har datatypen som ikke støttes i kolonnen {} Én (eller flere) av tabellens kolonner har datatyper som for øyeblikket ikke støttes. 3
FORBIDDEN_CHARS_IN_TABLE_NAME FEIL Tabell {}.{} inneholder forbudte tegn i navnet Tabellnavnet har tegn som ikke støttes. 1
NOT_REGULAR_TABLE FEIL Tabell {}.{} er ikke en vanlig tabell Tabelltype støttes ikke for speiling. 2
HAS_PRIMARY_KEY OK Tabell {}.{} har en primærnøkkel Tabell er en vanlig tabell og har en gyldig primærnøkkel som brukes til speiling.
HAS_UNIQUE_INDEX OK Tabell {}.{} har en passende unik indeks Tabellen har ikke en primærnøkkel, men har en ikke-nullbar unik indeks som skal brukes til speiling. Nullbare unike indekser vil forårsake en feil under replikeringsfasen og støttes ikke.
NO_INDEX_FULL_IDENTITY ADVARSEL Tabell {}.{} har ikke en passende unik indeks. Bruke full identitet Tabellen har verken en primærnøkkel eller en unik indeks, og REPLICA IDENTITY FULL må derfor støtte speiling, noe som kan føre til ytelsesproblemer og økt bruk av WAL.

1 Objektidentifikatorer med mellomrom (' ') støttes ikke.

2 Denne tabelltypen støttes ikke for speiling. For øyeblikket støttes ikke visninger, materialiserte visninger, sekundære tabeller og partisjonerte tabeller. TimescaleDB-hypertabeller støttes heller ikke for Fabric Mirroring.

3 Hvis du vil ha en liste over datatyper som ikke støttes, kan du se Begrensninger. Bare kolonner med følgende typer støttes:

  • 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 (* ikke som primærnøkkel)
  • 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 to 'tid med tidssone'-verdier som tilsvarer nøyaktig samme øyeblikk, men i forskjellige tidssoner, som forskjellige. For eksempel: 06:24:00.59+05 og 05:24:00.59+04 tilsvarer samme epoketid, men Postgres behandler dem forskjellig.

Standard ubegrensede numeriske kolonner i kildedatabaseskjemaer (uten definert presisjon og skala) konverteres til Desimal128(38, 0) før de replikeres til OneLake-tabeller, i tråd med SQL-standardkonvensjonen om at uspesifisert skala betyr heltallspresisjon.

Datadefinisjonsspråk (DDL)-operasjoner støttet på kildedatabasen

  • Omdøp kolonne: en kolonne med det nye navnet legges til i den speilede tabellen i Fabric og inneholder data for nylig innsatte rader (for eksisterende rader vil være NULL). Den gamle kolonnen opprettholdes fortsatt med verdier for eksisterende rader (for nye rader er NULL).
  • Legg til kolonne: Den tilføyde kolonnen er synlig i den speilede tabellen og inneholder data for nylig innsatte rader (for eksisterende rader er NULL).
  • Fjern kolonne: fjernet kolonne forblir synlig i den speilede tabellen og inneholder data for eksisterende rader (for nye rader er NULL).
  • Endre primærnøkkel: speilingsøkten fortsetter jevnlig.

Enhver annen DDL-operasjon på kildetabeller støttes for øyeblikket ikke og kan forårsake replikeringsfeil.

Endringer i stoffkapasitet eller arbeidsområde

Årsak Resultat Anbefalt oppløsning
Strukturkapasitet satt på pause/slettet Speiling stopper 1. Gjenoppta eller tilordne kapasitet fra Azure-portalen
2. Gå til Stoffspeilet databaseelement. Fra verktøylinjen velger du Stopp replikering.
3. Start replikeringen ved å velge Speildatabase for det speilede elementet i Fabric-portalen.
Stoffkapasiteten gjenopptas Speiling vil ikke bli gjenopptatt 1. Gå til Stoffspeilet databaseelement. Fra verktøylinjen velger du Stopp replikering.
2. Start replikeringen ved å velge Speil database for det speilede elementet i Fabric-portalen.
Arbeidsområdet er slettet Speiling stopper automatisk Hvis speiling fortsatt er aktiv på den fleksible Azure Database for PostgreSQL-serveren, kobler du til ved hjelp av en serveradministrator og utfører følgende kommandoer på PostgreSQL-serveren: select azure_cdc.list_tracked_publications();, deretter bruker du det returnerte publikasjonsnavnet og kjører select azure_cdc.stop_publication(<publication_name>);
Prøvekapasiteten for Fabric er utløpt Speiling stopper automatisk Se Prøvekapasiteten for Fabric utløper.
Stoffkapasitet overskredet Speiling pauser Vent til overbelastningstilstanden er over, eller oppdater kapasiteten. Finn ut mer i Handlinger du kan utføre for å gjenopprette etter overbelastningssituasjoner. Speilingen fortsetter når kapasiteten er gjenopprettet.
Eventuelle andre ressursfeil Speiling er deaktivert For å sikre at databehandlingsressursene dine ikke påvirkes og for å minimere innvirkningen på den fleksible Azure Database for PostgreSQL-serveren, deaktiverer speiling eventuelle vedvarende ressursfeil.
Innstillingen «Brukere kan få tilgang til data som er lagret i OneLake med apper som er eksterne for Fabric» deaktivert "Replicator - Tabeller kan ikke nå replikeringsstatus" Aktiver tenantinnstillingen Brukere kan få tilgang til data som er lagret i OneLake med apper som er eksterne for Fabric.

SQL-spørringer for feilsøking

Hvis du opplever speilingsproblemer, koble deg til kildeserveren Azure Database for PostgreSQL og utfør disse sjekkene ved hjelp av systemvisninger og funksjoner for å validere konfigurasjonen.

  1. Kjør følgende spørring for å validere om alle forutsetninger er oppfylt før du starter CDC-speilingen. Denne funksjonen sjekker ulike system- og konfigurasjonskrav for å sikre at serveren er klar for CDC-operasjoner.
-- 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"}]

Returer:(status text, data jsonb)

  • status: Overordnet status – OK hvis alle sjekker består, ERROR hvis noen prøver feiler
  • data: JSONB-array som inneholder detaljerte statusoppføringer med status, status_code, og valgfritt details

Statuskoder:

Status kode Nivå Description
IDENTITY_NOT_CONFIGURED FEIL Tjenesteprincipal-legitimasjoner er ikke konfigurert (azure.service_principal_id eller azure.service_principal_tenant_id GUC-er ikke satt)
CDC_ADMIN_ROLE_NOT_EXISTS FEIL Den azure_cdc_admin rollen eksisterer ikke i databasen
USER_NOT_CDC_ADMIN FEIL Nåværende bruker har ikke azure_cdc_admin-rollen
NO_CREATE_PRIVILEGE_ON_DATABASE FEIL Nåværende bruker mangler CREATE-privilegiet i databasen
PUBLICATION_LIMIT_REACHED FEIL Maksimalt antall publikasjoner (1) er nådd for databasen
SERVER_IN_RECOVERY FEIL Serveren er en standby-replika i gjenopprettingsmodus (CDC-speiling støttes ikke på standbyer)
MAX_WORKER_PROCESSES_TOO_LOW FEIL max_worker_processes er under anbefalt terskel (13)
  1. Kjør følgende spørring for å validere om tabeller i kildedatabasen din er kvalifisert for replikasjon. Ekskluderer systemskjemaer (pg_catalog, information_schema, ) pg_toastog utvidelseseide 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"}]

Returer: Sett av (table_schema text, table_name text, mirroring_status text, mirroring_data jsonb)

  • table_schema: Skjemanavn på tabellen
  • table_name: Navnet på tabellen
  • mirroring_status: Overordnet status - OK, WARNING, eller ERROR
  • mirroring_data: JSONB-array som inneholder detaljerte statusoppføringer med status, status_code, og valgfritt details

Statuskoder:

Status kode Nivå Description
SCHEMA_DOES_NOT_EXIST FEIL Det spesifiserte skjemaet eksisterer ikke
TABLE_DOES_NOT_EXIST FEIL Den angitte tabellen eksisterer ikke i skjemaet
FORBIDDEN_CHARS_IN_COLUMN_NAME FEIL Kolonnenavn inneholder forbudte tegn (f.eks. mellomrom)
FORBIDDEN_CHARS_IN_TABLE_NAME FEIL Tabellnavn inneholder forbudte tegn
UNSUPPORTED_DATA_TYPE ADVARSEL Tabellen har kolonner med ikke-støttede datatyper
UNSUPPORTED_TYPE_IN_REPLICA_IDENTITY FEIL Ustøttet datatype i kolonner for replikaidentitet (når det ikke finnes noen unik indeks)
NOT_REGULAR_TABLE FEIL Tabellen er ikke en regulær, permanent tabell (f.eks. visning, midlertidig, partisjon)
NOT_TABLE_OWNER FEIL Nåværende bruker er ikke eier av tabellen
HAS_PRIMARY_KEY OK Tabellen har en primærnøkkel
HAS_UNIQUE_INDEX OK Tabellen har en passende unik indeks
NO_INDEX_FULL_IDENTITY ADVARSEL Ingen egnet unik indeks; Full radidentitet vil bli brukt (kan påvirke ytelsen)
  1. Kjør følgende spørring for å returnere feil og problemer oppdaget under replikeringsoperasjoner, inkludert systemomfattende feil, publikasjonsspesifikke feil og feil 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');

Parametere:

  • db_name (tekst): Databasenavn
  • pub_name (tekst): Publikasjonens navn

Oppførsel:

  • Når det kalles med tomme strenger for begge parameterne (azure_cdc.get_health_status('', '')): Returnerer kun systemomfattende feil (feiltype 'S').
  • Når den kalles med gyldige database- og publikasjonsnavn: Returnerer både systemomfattende feil og publikasjons-/tabellspesifikke feil for den angitte publikasjonen.

Returer: Sett av (error_time timestamptz, schema_name text, table_name text, error_type char(1), error_code text, params jsonb)

Feiltyper:

Feiltype Description
S Systemomfattende feil
P Publikasjonsspesifikk feil
T Tabellspesifikk feil

Feilkoder:

Feilkode Type Description
CDC_ERR_SYS_MAX_NUMBER_OF_WORKERS_REACHED S Maksimalt antall arbeidere nådd
CDC_ERR_SYS_MAX_NUMBER_OF_PUBLICATIONS_REACHED S Maksimalt antall publikasjoner for databasen som er nådd
CDC_ERR_SYS_ONELAKE_PERMISSION_DENIED S Tillatelse avslått for OneLake-aksjon
CDC_ERR_SYS_ONELAKE_ARTIFACT_DOES_NOT_EXIST S OneLake-artefakt ikke funnet
CDC_ERR_SYS_ONELAKE_COMM_FAILED S OneLake-kommunikasjonen sviktet
CDC_ERR_SYS_ONELAKE_BAD_REQUEST S Dårlig forespørsel til OneLake
CDC_ERR_PUB_SNAPSHOT_TIMEOUT P Snapshot er ikke klart etter timeout
CDC_ERR_PUB_SNAPSHOT_WORKER_TIMEOUT P Snapshot worker timeout for en spesifikk tabell
CDC_ERR_PUB_ONELAKE_PERMISSION_DENIED P Tillatelse avslått for OneLake-aksjon
CDC_ERR_PUB_ONELAKE_ARTIFACT_DOES_NOT_EXIST P OneLake-artefakt ikke funnet
CDC_ERR_PUB_ONELAKE_COMM_FAILED P OneLake-kommunikasjonen sviktet
CDC_ERR_PUB_MAX_NUMBER_OF_WORKERS_REACHED P Maks antall arbeidere som ble publisert
CDC_ERR_PUB_ONELAKE_BAD_REQUEST P Dårlig forespørsel til OneLake
CDC_ERR_PUB_TOO_MANY_ERRORS P For mange feil under publiseringsprosessen
CDC_ERR_TABLE_TRUNCATE_NOT_SUPPORTED T Truncate-operasjonen støttes ikke (kan forårsake datainkonsistens)
  1. Kjør følgende spørring for å sjekke om publiseringen er opprettet korrekt og at replikasjonen flyter riktig:

    select * from azure_cdc.tracked_publications;
    

    Sjekk om publikasjonen er aktiv og øyeblikksbilde er generert. Du kan også sjekke om etterfølgende endringsgrupper er generert ved å spørre:

    select * from azure_cdc.tracked_batches;
    
  2. Hvis visningen azure_cdc.tracked_publications ikke viser noen fremdrift ved behandling av trinnvise endringer, kjører du følgende SQL-spørring for å kontrollere om det er rapportert problemer:

    SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';
    
  3. Hvis det ikke er rapportert noen problemer, utfør følgende kommando for å se gjennom gjeldende konfigurasjon av den speilede PostgreSQL-databasen. Bekreft at den er riktig aktivert.

    SELECT * FROM pg_replication_slots;
    

    Nøkkelkolonnene du vil se etter her, er slot_name og active. Enhver verdi i tillegg til t (sann) indikerer et potensielt problem.

  4. Kontakt kundestøtte hvis feilsøking kreves.

Administrert identitet

Den systemtilordnede administrerte identiteten (SAMI) for den fleksible Azure Database for PostgreSQL-serveren må være aktivert, og må være den primære identiteten. Hvis du vil ha mer informasjon, kan du se Systemtilordnet administrert identitet for PostgreSQL fleksibel server.

Etter aktivering, hvis SAMI-innstillingsstatus senere deaktiveres og deretter aktiveres igjen, mislykkes speilingen av Azure Database for PostgreSQL fleksibel server til Fabric OneLake.

Kontroller at SAMI er aktivert med følgende spørring: show azure.service_principal_id;

SAMI tillatelser

Ikke fjern Azure Database for PostgreSQL fleksibel server System Assigned Managed Identity (SAMI)-bidragsytertillatelser på Fabric speilet databaseelement.

Hvis du ved et uhell fjerner SAMI-tillatelser, fungerer ikke speiling av Azure Database for PostgreSQL fleksibel server som forventet. Ingen nye data kan speiles fra kildedatabasen.

Hvis du fjerner Azure Database for PostgreSQL fleksible server-SAMI-tillatelser eller -tillatelser som ikke er riktig konfigurert, bruker du følgende trinn.

  1. Legg til den fleksible serveren SAMI som en bruker ved å velge ... ellipsealternativet på det speilede databaseelementet.
  2. Velg alternativet Administrer tillatelser .
  3. Skriv inn navnet på den fleksible Azure Database for PostgreSQL-serveren. Gi lese - og skrivetillatelser .