Peilattujen Fabric-tietokantojen vianmääritys joustavasta Azure Database for PostgreSQL -palvelimesta

Tässä artikkelissa käsitellään joustavan Azure Database for PostgreSQL -palvelimen peilaamisen vianmääritysvaiheita.

Virhe-/varoitusviestien vianmääritys peilauksen taulukon valinnan aikana

Kun luot uuden peilatun tietokannan, saatat saada Valitse tiedot -sivulla visuaalista palautetta lähdetietokannan tietyistä taulukoista. Seuraavassa taulukossa on luettelo mahdollisista ongelmista, mukaan lukien näyttöön tuleva sanoma ja siihen liittyvä kuvaus ongelman ratkaisemisesta.

Tilan koodi Tilan tyyppi Viesti Description
SCHEMA_DOES_NOT_EXIST VIRHE Skeemaa {} ei ole olemassa Annettua skeemaa ei ole olemassa. Se olisi voitu poistaa, kun Fabric veti asiaankuuluvia taulukkotietoja. Yritä.
TABLE_DOES_NOT_EXIST VIRHE Skeemassa {}taulukkoa {} ei ole olemassa. Annettua taulukkoa ei ole olemassa. Se olisi voitu poistaa, kun Fabric veti asiaankuuluvia taulukkotietoja. Yritä.
FORBIDDEN_CHARS_IN_COLUMN_NAME VIRHE Taulukko {}.{} sisältää kiellettyjä merkkejä sarakkeiden nimessä {} Annetussa sarakkeessa on nimeä, jota ei tueta. 1
UNSUPPORTED_DATA_TYPE VIRHE Taulukossa {}.{} on tietotyyppiä, jota ei tueta sarakkeessa {} Yhdessä (tai useammassa) taulukon sarakkeista ei tällä hetkellä tueta tietotyyppejä. 3
FORBIDDEN_CHARS_IN_TABLE_NAME VIRHE Taulukko {}.{} sisältää kiellettyjä merkkejä nimessä Taulukon nimessä on merkkejä, joita ei tueta. 1
NOT_REGULAR_TABLE VIRHE Taulukko {}.{} ei ole tavallinen taulukko Taulukkotyyppiä ei tueta peilauksessa. 2
HAS_PRIMARY_KEY OKEI Taulukossa {}.{} on perusavain Taulukko on tavallinen taulukko, ja siinä on kelvollinen perusavain, jota käytetään peilaamiseen.
HAS_UNIQUE_INDEX OKEI Taulukossa {}.{} on sopiva yksilöllinen hakemisto Taulukossa ei ole ensisijaista avainta, mutta sillä on ei-nollattava yksikäsitteinen indeksi, jota käytetään peilaamiseen. Nollattavat uniikit indeksit aiheuttavat virheen replikaatiovaiheessa eikä niitä tueta.
NO_INDEX_FULL_IDENTITY VAROITUS Taulukossa {}.{} ei ole sopivaa yksilöllistä indeksiä. Täyden identiteetin käyttäminen Taulukossa ei ole ensisijaista avainta tai yksilöllistä indeksiä, joten REPLICA IDENTITY FULL sen on tuettava peilausta, mikä voi aiheuttaa suorituskykyongelmia ja lisäkäyttöä WAL:ssa.

1 Välilyönnin (' ') merkkiä sisältäviä objektitunnisteita ei tueta.

2 Tätä taulukkotyyppiä ei tueta peilauksessa. Tällä hetkellä näkymiä, materialisoituja näkymiä, vieraita taulukoita ja osioituja taulukoita ei tueta. TimescaleDB-hypertaulukoita ei myöskään tueta Fabric Mirroringissa.

3 Luettelo tietotyypeistä, joita ei tueta, on kohdassa Rajoitukset. Vain sarakkeita, joilla on seuraavat tyypit, tuetaan:

  • 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 (* ei perusavaimena)
  • 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

Postgresissa kahta "aika aikavyöhykkeellä" -arvoa, jotka vastaavat täsmälleen samaa hetkeä, mutta eri aikavyöhykkeillä, pidetään erilaisina. Esimerkiksi: 06:24:00.59+05 ja 05:24:00.59+04 vastaavat samaa aikakauden aikaa, mutta Postgres kohtelee niitä eri tavalla.

Oletusrajoittamattomat numeeriset sarakkeet lähdetietokantaskeemoissa (ilman määriteltyä tarkkuutta ja skaalausta) muunnetaan muotoon Decimal128(38, 0) ennen kuin ne replikoidaan OneLake-tauluihin, mikä vastaa SQL-standardikäytäntöä, jonka mukaan määrittelemätön skaalaus tarkoittaa kokonaislukutarkkuutta.

Lähdetietokannassa tuetut tietojen määrittelykielen (DDL) toiminnot

  • Rename-sarakke: sarake uudella nimellä lisätään peilikuvaan taulukkoon Fabric ja sisältää tiedot uusista riveistä (olemassa olevat rivit ovat NULL). Vanha sarake säilytetään edelleen olemassa olevien rivien arvoilla (uudet rivit ovat NOLLA).
  • Lisää sarakke: lisätty sarake näkyy peilatussa taulukossa ja sisältää tiedot uusista riveistä (nykyiset rivit ovat NULL).
  • Poista sarakke: poistettu sarake pysyy näkyvissä peilitaulukossa ja sisältää tiedot olemassa olevista riveistä (uudet rivit ovat NULL).
  • Vaihda pääavain: peilaussessio jatkuu säännöllisesti.

Mikään muu DDL-operaatio lähdetauluilla ei tällä hetkellä ole tuettuja ja voi aiheuttaa replikaatiovirheitä.

Fabric-kapasiteetin tai työtilan muutokset

Syy Tulos Suositeltu ratkaisu
Kankaan kapasiteetti keskeytetty/poistettu Peilaus pysähtyy 1. Kapasiteetin jatkaminen tai määrittäminen Azure-portaalista
2. Siirry Fabric-peilattuun tietokantakohteeseen. Valitse työkaluriviltä Lopeta replikointi.
3. Aloita replikointi valitsemalla peilatulle kohteelle Peilitietokanta Fabric-portaalissa.
Kankaan kapasiteetti jatkui Peilausta ei jatketa 1. Siirry Fabric-peilattuun tietokantakohteeseen. Valitse työkaluriviltä Lopeta replikointi.
2. Aloita replikointi valitsemalla peilatulle kohteelle Peilitietokanta Fabric-portaalissa.
Työtila poistettu Peilaus pysähtyy automaattisesti Jos peilaus on edelleen aktiivinen joustavassa Azure Database for PostgreSQL -palvelimessa, muodosta yhteys palvelimen järjestelmänvalvojan avulla ja suorita seuraavat komennot PostgreSQL-palvelimessasi: select azure_cdc.list_tracked_publications();, käytä sitten palautettua julkaisunimeä ja suorita se select azure_cdc.stop_publication(<publication_name>);
Fabricin kokeilukapasiteetti umpeutunut Peilaus pysähtyy automaattisesti Katso Fabricin kokeilukapasiteetti vanhenee.
Kankaan kapasiteetti ylitetty Peilauksen tauot Odota, kunnes ylikuormitustila on ohi, tai päivitä kapasiteettisi. Lue lisää kohdasta Toimet, joilla voit toipua ylikuormitustilanteista. Peilaus jatkuu, kun kapasiteetti on palautettu.
Muut resurssivirheet Peilaus ei ole käytössä Jotta voit varmistaa, että tämä ei vaikuta laskentaresursseihisi ja minimoida vaikutuksen joustavaan Azure Database for PostgreSQL -palvelimeen, peilaus poistaa käytöstä kaikki pysyvät resurssivirheet.
"Käyttäjät voivat käyttää OneLakeen tallennettuja tietoja, kun Fabricin ulkoiset sovellukset" -asetus on poistettu käytöstä "Replikointi – taulukot eivät voi saavuttaa replikoinnin tilaa" Ota vuokraaja-asetus käyttöön Käyttäjät voivat käyttää OneLakeen tallennettuja tietoja Fabricin ulkoisilla sovelluksilla.

SQL-kyselyt vianmääritystä varten

Jos kohtaat peilausongelmia, yhdistä lähdekoodi Azure Database for PostgreSQL -palvelimeen ja tee nämä tarkistukset järjestelmänäkymien ja -toimintojen avulla konfiguraation validointiin.

  1. Suorita seuraava kysely varmistaaksesi, täyttyvätkö kaikki edellytykset ennen CDC-peilauksen aloittamista. Tämä toiminto tarkistaa erilaiset järjestelmä- ja konfiguraatiovaatimukset varmistaakseen, että palvelin on valmis CDC:n toimintaan.
-- 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"}]

Palautukset:(status text, data jsonb)

  • status: Yleinen tila – OK jos kaikki tarkistukset läpäisevät, ERROR jos jokin tarkistus epäonnistuu
  • data: JSONB-taulukko, joka sisältää yksityiskohtaiset tilamerkinnät, joissa status, status_code, ja valinnainen details

Tilakoodit:

Tilan koodi Taso Description
IDENTITY_NOT_CONFIGURED VIRHE Palvelupäähenkilön tunnistetietoja ei ole määritetty (azure.service_principal_id tai azure.service_principal_tenant_id GUC:t eivät ole asetettu)
CDC_ADMIN_ROLE_NOT_EXISTS VIRHE azure_cdc_admin roolia ei ole tietokannassa
USER_NOT_CDC_ADMIN VIRHE Nykyisellä käyttäjällä ei ole azure_cdc_admin roolia
NO_CREATE_PRIVILEGE_ON_DATABASE VIRHE Nykyisellä käyttäjällä ei ole CREATE-oikeutta tietokannassa
PUBLICATION_LIMIT_REACHED VIRHE Tietokannalle on saavutettu enimmäismäärä julkaisuja (1)
SERVER_IN_RECOVERY VIRHE Palvelin on valmiusreplika palautustilassa (CDC-peilaus ei tue valmiustilassa)
MAX_WORKER_PROCESSES_TOO_LOW VIRHE max_worker_processes on alle suositellun kynnyksen (13)
  1. Suorita seuraava kysely varmistaaksesi, ovatko lähdetietokantasi taulut kelpoisia replikaatioon. Sulkee pois järjestelmäskeemat (pg_catalog, information_schema, pg_toast) ja laajennuksen omistamat taulukot.
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"}]

Palautukset: Joukko (table_schema text, table_name text, mirroring_status text, mirroring_data jsonb)

  • table_schema: Taulukon skeeman nimi
  • table_name: Taulukon nimi
  • mirroring_status: Kokonaistila - OK, WARNING, tai ERROR
  • mirroring_data: JSONB-taulukko, joka sisältää yksityiskohtaiset tilamerkinnät, joissa status, status_code, ja valinnainen details

Tilakoodit:

Tilan koodi Taso Description
SCHEMA_DOES_NOT_EXIST VIRHE Määriteltyä skeemaa ei ole olemassa
TABLE_DOES_NOT_EXIST VIRHE Määriteltyä taulukkoa ei ole skeemassa
FORBIDDEN_CHARS_IN_COLUMN_NAME VIRHE Sarakkeen nimet sisältävät kiellettyjä merkkejä (esim. välilyöntejä)
FORBIDDEN_CHARS_IN_TABLE_NAME VIRHE Taulukon nimi sisältää kiellettyjä merkkejä
UNSUPPORTED_DATA_TYPE VAROITUS Taulukossa on sarakkeita, joiden tietotyypit eivät ole tuettuja
UNSUPPORTED_TYPE_IN_REPLICA_IDENTITY VIRHE Tuettu tietotyyppi replika-identiteettisarakkeissa (kun yksilöllistä indeksiä ei ole)
NOT_REGULAR_TABLE VIRHE Taulukko ei ole tavallinen, pysyvä taulukko (esim. näkymä, väliaikainen, ositus)
NOT_TABLE_OWNER VIRHE Nykyinen käyttäjä ei ole taulukon omistaja
HAS_PRIMARY_KEY OKEI Taulukossa on primaariavain
HAS_UNIQUE_INDEX OKEI Taulukolla on sopiva yksikäsitteinen indeksi
NO_INDEX_FULL_IDENTITY VAROITUS Ei sopivaa yksilöllistä indeksiä; Koko riviidentiteettiä käytetään (voi vaikuttaa suorituskykyyn)
  1. Suorita seuraava kysely palauttaaksesi replikaatiotoimintojen aikana havaitut virheet ja ongelmat, mukaan lukien järjestelmätason virheet, julkaisukohtaiset virheet ja taulukkokohtaiset virheet.
-- 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');

Parametrit:

  • db_name (teksti): Tietokannan nimi
  • pub_name (teksti): Julkaisun nimi

Käyttäytyminen:

  • Kun kutsutaan tyhjillä merkkijonoilla molemmille parametreille (azure_cdc.get_health_status('', '')): Palauttaa vain järjestelmätason virheitä (virhetyyppi 'S').
  • Kun kutsutaan kelvollisilla tietokanta- ja julkaisunimillä: Palauttaa sekä järjestelmätason virheet että julkaisu- ja taulukkokohtaiset virheet määritellystä julkaisusta.

Palautukset: Joukko (error_time timestamptz, schema_name text, table_name text, error_type char(1), error_code text, params jsonb)

Virhetyypit:

Virhetyyppi Description
S Järjestelmätason virhe
P Julkaisukohtainen virhe
T Taulukkokohtainen virhe

Virhekoodit:

Virhekoodi Tyyppi Description
CDC_ERR_SYS_MAX_NUMBER_OF_WORKERS_REACHED S Maksimimäärä työntekijöitä saavutettu
CDC_ERR_SYS_MAX_NUMBER_OF_PUBLICATIONS_REACHED S Tietokannan suurin julkaisumäärä
CDC_ERR_SYS_ONELAKE_PERMISSION_DENIED S Lupa evätty OneLake-toimille
CDC_ERR_SYS_ONELAKE_ARTIFACT_DOES_NOT_EXIST S OneLake-artefaktia ei löydetty
CDC_ERR_SYS_ONELAKE_COMM_FAILED S OneLake-viestintä epäonnistui
CDC_ERR_SYS_ONELAKE_BAD_REQUEST S Huono pyyntö OneLakelle
CDC_ERR_PUB_SNAPSHOT_TIMEOUT P Snapshot ei ole valmis aikalisän jälkeen
CDC_ERR_PUB_SNAPSHOT_WORKER_TIMEOUT P Snapshot-työntekijän aikakatkaisu tietylle taulukolle
CDC_ERR_PUB_ONELAKE_PERMISSION_DENIED P Lupa evätty OneLake-toimille
CDC_ERR_PUB_ONELAKE_ARTIFACT_DOES_NOT_EXIST P OneLake-artefaktia ei löydetty
CDC_ERR_PUB_ONELAKE_COMM_FAILED P OneLake-viestintä epäonnistui
CDC_ERR_PUB_MAX_NUMBER_OF_WORKERS_REACHED P Suurin määrä työntekijöitä, jotka haettiin julkaisua varten
CDC_ERR_PUB_ONELAKE_BAD_REQUEST P Huono pyyntö OneLakelle
CDC_ERR_PUB_TOO_MANY_ERRORS P Liian paljon virheitä julkaisun käsittelyn aikana
CDC_ERR_TABLE_TRUNCATE_NOT_SUPPORTED T Katkaisutoiminto ei tue (voi aiheuttaa datan epäjohdonmukaisuuden)
  1. Suorita seuraava kysely tarkistaaksesi, onko julkaisu luotu oikein ja replikaatiomuutokset sujuvat oikein:

    select * from azure_cdc.tracked_publications;
    

    Tarkista, onko julkaisu aktiivinen ja tilannekuva on luotu. Voit myös tarkistaa, onko myöhempiä muutoseriä luotu kyselemällä:

    select * from azure_cdc.tracked_batches;
    
  2. Jos azure_cdc.tracked_publications näkymä ei näytä edistymistä inkrementaalisten muutosten käsittelyssä, suorita seuraava SQL-kysely ja tarkista, onko raportoitu ongelmia:

    SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';
    
  3. Jos ongelmia ei ole raportoitu, suorita seuraava komento tarkistaaksesi peilatun PostgreSQL-tietokannan nykyiset määritykset. Varmista, että se on otettu käyttöön oikein.

    SELECT * FROM pg_replication_slots;
    

    Tässä etsittävät avainsarakkeet ovat ja slot_nameactive. Mikä tahansa arvo ( t tosi) lisäksi ilmaisee mahdollisen ongelman.

  4. Ota yhteyttä tukeen , jos vianmääritys on tarpeen.

Hallitut käyttäjätiedot

Joustavan Azure Database for PostgreSQL -palvelimen järjestelmän määrittämä hallittu käyttäjätieto (SAMI) on otettava käyttöön, ja sen on oltava ensisijainen käyttäjätieto. Lisätietoja on artikkelissa Järjestelmälle määritetty hallittu käyttäjätieto joustavalle PostgreSQL-palvelimelle.

Jos SAMI-asetuksen tila poistetaan myöhemmin käytöstä käyttöönoton jälkeen ja otetaan uudelleen käyttöön, joustavan Azure Database for PostgreSQL -palvelimen peilaus Fabric OneLakeen epäonnistuu.

Varmista, että SAMI on käytössä seuraavalla kyselyllä: show azure.service_principal_id;

SAMI-käyttöoikeudet

Älä poista Azure Database for PostgreSQL joustavan palvelimen System Assigned Managed Identity (SAMI) -avustajan käyttöoikeuksia peilatussa Fabric-tietokantakohteessa.

Jos poistat vahingossa SAMI-käyttöoikeudet, joustavan Azure Database for PostgreSQL -palvelimen peilaus ei toimi odotetulla tavalla. Lähdetietokannasta ei voi peilata uusia tietoja.

Jos poistat Azure Database for PostgreSQL joustavan palvelimen SAMI-käyttöoikeuksia tai käyttöoikeuksia ei ole määritetty oikein, toimi seuraavasti.

  1. Lisää joustava palvelimen SAMI käyttäjäksi valitsemalla ... peilatun tietokantakohteen kolme pistettä -vaihtoehto.
  2. Valitse Hallitse käyttöoikeuksia -vaihtoehto.
  3. Kirjoita joustavan Azure Database for PostgreSQL -palvelimen nimi. Anna luku - ja kirjoitusoikeudet .