Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden stappen beschreven voor probleemoplossing voor het spiegelen van flexibele Azure Database for PostgreSQL-servers.
Fout-/waarschuwingsberichten oplossen tijdens het selecteren van tabellen voor spiegeling
Wanneer u een nieuwe gespiegelde database maakt, ontvangt u op de pagina Gegevens kiezen mogelijk visuele feedback over specifieke tabellen in de brondatabase. De volgende tabel bevat een lijst met mogelijke problemen, waaronder het weergegeven bericht en de bijbehorende beschrijving over het oplossen van het probleem.
| Statuscode | Status type | Message | Description |
|---|---|---|---|
SCHEMA_DOES_NOT_EXIST |
ERROR | Het schema {} bestaat niet | Het opgegeven schema bestaat niet. Het kan zijn verwijderd terwijl Fabric relevante tabelgegevens aan het ophalen was. Probeer het opnieuw. |
TABLE_DOES_NOT_EXIST |
ERROR | In het schema {}bestaat de tabel {} niet. | De gegeven tabel bestaat niet. Het zou verwijderd kunnen zijn terwijl Fabric relevante tabelgegevens ophaalde. Probeer het opnieuw. |
FORBIDDEN_CHARS_IN_COLUMN_NAME |
ERROR | Tabel {}.{} bevat verboden tekens in de naam van kolommen {} | De opgegeven kolom heeft een niet-ondersteund teken in de naam. 1 |
UNSUPPORTED_DATA_TYPE |
ERROR | Tabel {}.{} heeft een niet ondersteund gegevenstype in kolom {} | Een (of meer) kolommen van een tabel bevatten momenteel niet-ondersteunde gegevenstypen. 3 |
FORBIDDEN_CHARS_IN_TABLE_NAME |
ERROR | Tabel {}.{} bevat verboden tekens in naam | Tabelnaam bevat niet-ondersteunde tekens. 1 |
NOT_REGULAR_TABLE |
ERROR | Tabel {}.{} is geen gewone tabel | Het tabeltype wordt niet ondersteund voor spiegeling. 2 |
HAS_PRIMARY_KEY |
OK | Tabel {}.{} heeft een primaire sleutel | Tabel is een gewone tabel en heeft een geldige primaire sleutel die wordt gebruikt voor spiegeling. |
HAS_UNIQUE_INDEX |
OK | Tabel {}.{} heeft een geschikte unieke index | Tabel heeft geen primaire sleutel, maar heeft een niet-nul unieke index die moet worden gebruikt voor spiegeling. Nullable unieke indexen veroorzaken een fout tijdens de replicatiefase en worden niet ondersteund. |
NO_INDEX_FULL_IDENTITY |
WAARSCHUWING | Tabel {}.{} heeft geen geschikte unieke index. Volledige identiteit gebruiken | Tabel heeft geen primaire sleutel of een unieke index, dus REPLICA IDENTITY FULL is vereist voor het ondersteunen van spiegeling, wat prestatieproblemen en aanvullend WAL-gebruik kan veroorzaken. |
1 Object-id's met een spatie (' ') worden niet ondersteund.
2 Dit tabeltype wordt niet ondersteund voor spiegeling. Momenteel worden weergaven, gerealiseerde weergaven, buitenlandse tabellen en gepartitioneerde tabellen niet ondersteund. TimescaleDB-hypertabellen worden ook niet ondersteund voor Fabric Mirroring.
3 Zie Beperkingen voor een lijst met niet-ondersteunde gegevenstypen. Alleen kolommen met de volgende typen worden ondersteund:
bigintbigserialbooleanbyteacharactercharacter varyingdatedouble precisionintegernumericrealserialoidmoneysmallintsmallserialtexttime without time zone-
time with time zone(* niet als primaire sleutel) timestamp without time zonetimestamp with time zoneuuidxmljsonjsonbinetcidrmacaddrmacaddr8tsvectortsqueryint4rangeint8rangenumrangetsrangetstzrangedaterangecirclelinelsegboxpathpointpolygoninterval
In Postgres worden twee 'tijd met tijdzone'-waarden die exact hetzelfde moment overeenkomen, maar in verschillende tijdzones als verschillend beschouwd. Bijvoorbeeld: 06:24:00.59+05 en 05:24:00.59+04 corresponderen met dezelfde tijdsduur, maar Postgres behandelt ze anders.
Standaard ongelimiteerde numerieke kolommen in brondatabaseschema's (zonder gedefinieerde precisie en schaal) worden geconverteerd naar Decimal128(38, 0) voordat ze worden gerepliceerd naar OneLake-tabellen, in overeenstemming met de SQL-standaardconventie waarbij een niet-opgegeven schaal betekent dat er een gehele precisie wordt gehanteerd.
DDL-bewerkingen (Data Definition Language) die worden ondersteund in de brondatabase
- Kolom hernoemen: een kolom met de nieuwe naam wordt toegevoegd aan de gespiegelde tabel in Fabric en zal gegevens bevatten voor nieuw ingevoegde rijen (voor bestaande rijen zal NULL zijn). De oude kolom wordt nog steeds onderhouden met waarden voor de bestaande rijen (voor nieuwe rijen is NULL).
- Kolom toevoegen: toegevoegde kolom is zichtbaar in de gespiegelde tabel en bevat gegevens voor nieuw ingevoegde rijen (voor bestaande rijen zijn NULL).
- Kolom verwijderen: verwijderde kolom blijft zichtbaar in de gespiegelde tabel en bevat gegevens voor bestaande rijen (voor nieuwe rijen is NULL).
- Primaire sleutel wijzigen: de spiegelingssessie wordt regelmatig voortgezet.
Elke andere DDL-bewerking op brontabellen wordt momenteel niet ondersteund en kan replicatiefouten veroorzaken.
Wijzigingen in Fabriccapaciteit of -werkruimte
| Oorzaak | Resultaat | Aanbevolen oplossing |
|---|---|---|
| Fabriccapaciteit gepauzeerd/verwijderd | Spiegelingsstops | 1. Capaciteit hervatten of toewijzen vanuit Azure Portal 2. Ga naar 'Fabric' gerepliceerd database-item. Selecteer replicatie stoppen in de werkbalk. 3. Start de replicatie door spiegeldatabase te selecteren voor het gespiegelde item in de Fabric-portal. |
| Infrastructuurcapaciteit hervat | Spiegelen wordt niet hervat | 1. Ga naar Fabric gespiegeld database-item. Selecteer replicatie stoppen in de werkbalk. 2. Start de replicatie door spiegeldatabase te selecteren voor het gespiegelde item in de Fabric-portal. |
| Werkruimte verwijderd | Spiegeling stopt automatisch | Als spiegeling nog steeds actief is op de flexibele Server van Azure Database for PostgreSQL, maakt u verbinding met een serverbeheerder en voert u de volgende opdrachten uit op uw PostgreSQL-server: select azure_cdc.list_tracked_publications();, gebruikt u de geretourneerde publicatienaam en voert u de opdracht uit select azure_cdc.stop_publication(<publication_name>); |
| Capaciteit van de fabric-proefversie is verlopen | Spiegeling stopt automatisch | Bekijk de afloop van de fabric-proefcapaciteit. |
| De capaciteit van het fabric netwerk is overschreden | Spiegelpauzes | Wacht totdat de overbelastingsstatus voorbij is of werk de capaciteit bij. Meer informatie over acties die u kunt ondernemen om te herstellen uit overbelastingssituaties. Spiegeling wordt voortgezet zodra de capaciteit is hersteld. |
| Andere mogelijke bronfouten | Spiegelen is uitgeschakeld | Om ervoor te zorgen dat uw rekenresources niet worden beïnvloed en om de impact op de flexibele Azure Database voor PostgreSQL-server te minimaliseren, wordt spiegeling uitgeschakeld bij aanhoudende resourcefouten. |
| De instelling 'Gebruikers kunnen toegang krijgen tot gegevens die zijn opgeslagen in OneLake met apps buiten Fabric' is uitgeschakeld. | "Replicator - Tabellen kunnen de replicatiestatus niet bereiken" | Schakel de tenantinstelling in Gebruikers hebben toegang tot gegevens die zijn opgeslagen in OneLake met apps buiten Fabric. |
SQL-query's voor probleemoplossing
Als u problemen ondervindt met spiegelen, maakt u verbinding met de bron-Azure Database for PostgreSQL-server en voert u deze controles uit met behulp van systeemweergaven en -functies om de configuratie te valideren.
- Voer de volgende query uit om te controleren of aan alle vereisten wordt voldaan voordat je CDC-spiegeling start. Met deze functie worden verschillende systeem- en configuratievereisten gecontroleerd om ervoor te zorgen dat de server gereed is voor CDC-bewerkingen.
-- 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"}]
Retourneert:(status text, data jsonb)
-
status: Algemene status :OKals alle controles zijn geslaagd,ERRORals er een controle mislukt -
data: JSONB-matrix met gedetailleerde statusvermeldingen metstatus,status_codeen optioneeldetails
Statuscodes:
| Statuscode | Level | Description |
|---|---|---|
| IDENTITY_NOT_CONFIGURED | ERROR | Service-principalreferenties zijn niet geconfigureerd (azure.service_principal_id of azure.service_principal_tenant_id GUC's zijn niet ingesteld) |
| CDC_ADMIN_ROLE_NOT_EXISTS | ERROR | De rol azure_cdc_admin bestaat niet in de database |
| USER_NOT_CDC_ADMIN (Gebruiker is geen CDC-beheerder) | ERROR | Huidige gebruiker heeft niet de rol azure_cdc_admin |
| GEEN_AANMAAKPRIVILEGES_OP_DATABASE | ERROR | Huidige gebruiker heeft geen CREATE-bevoegdheid voor de database |
| PUBLICATIELIMIET BEREIKT | ERROR | Maximum aantal publicaties (1) is bereikt voor de database |
| SERVER_IN_RECOVERY | ERROR | Server is een standby-replica in de herstelmodus (CDC-spiegeling wordt niet ondersteund op standbys) |
| MAX_WORKER_PROCESSES_TOO_LOW | ERROR | max_worker_processes ligt onder de aanbevolen drempelwaarde (13) |
- Voer de volgende query uit om te controleren of tabellen in uw brondatabase in aanmerking komen voor replicatie. Hiermee worden systeemschema's (
pg_catalog,information_schema, ,pg_toast) en tabellen in eigendom van extensies uitgesloten.
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"}]
Retourneert: Set van (table_schema text, table_name text, mirroring_status text, mirroring_data jsonb)
-
table_schema: Schemanaam van de tabel -
table_name: Naam van de tabel -
mirroring_status: Algemene status -OK,WARNING, ofERROR -
mirroring_data: JSONB-matrix met gedetailleerde statusvermeldingen metstatus,status_codeen optioneeldetails
Statuscodes:
| Statuscode | Level | Description |
|---|---|---|
| SCHEMA_DOES_NOT_EXIST | ERROR | Het opgegeven schema bestaat niet |
| TABEL_BESTAAT_NIET | ERROR | De opgegeven tabel bestaat niet in het schema |
| VERBODEN_TE_KARAKTERS_IN_KOLOMNAAM | ERROR | Kolomnamen bevatten verboden tekens (bijvoorbeeld spaties) |
| FORBIDDEN_CHARS_IN_TABLE_NAME | ERROR | Tabelnaam bevat verboden tekens |
| UNSUPPORTED_DATA_TYPE | WAARSCHUWING | Tabel bevat kolommen met niet-ondersteunde gegevenstypen |
| UNSUPPORTED_TYPE_IN_REPLICA_IDENTITY (Niet ondersteund type in replica-identiteit) | ERROR | Niet-ondersteund gegevenstype in replicaidentiteitskolommen (wanneer er geen unieke index bestaat) |
| NOT_REGULAR_TABLE | ERROR | Tabel is geen gewone, permanente tabel (bijvoorbeeld weergave, tijdelijk, partitie) |
| NOT_TABLE_OWNER | ERROR | Huidige gebruiker is niet de eigenaar van de tabel |
| HAS_PRIMARY_KEY | OK | Tabel heeft een primaire sleutel |
| HAS_UNIQUE_INDEX | OK | Tabel heeft een geschikte unieke index |
| NO_INDEX_FULL_IDENTITY | WAARSCHUWING | Geen geschikte unieke index; volledige rij-identiteit wordt gebruikt (kan van invloed zijn op de prestaties) |
- Voer de volgende query uit om fouten en problemen te retourneren die zijn gedetecteerd tijdens replicatiebewerkingen, inclusief systeemfouten, publicatiespecifieke fouten en fouten per tabel.
-- 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(tekst): Databasenaam -
pub_name(tekst): Publicatienaam
Gedrag:
- Wanneer aangeroepen met lege tekenreeksen voor beide parameters (
azure_cdc.get_health_status('', '')): retourneert alleen systeembrede fouten (fouttype 'S'). - Wanneer deze wordt aangeroepen met geldige database- en publicatienamen: retourneert zowel systeembrede fouten als publicatie-/tabelspecifieke fouten voor de opgegeven publicatie.
Retourneert: Set van (error_time timestamptz, schema_name text, table_name text, error_type char(1), error_code text, params jsonb)
Fouttypen:
| Fouttype | Description |
|---|---|
| S | Systeembrede fout |
| P | Publicatiespecifieke fout |
| T | Tabelspecifieke fout |
Foutcodes:
| Foutcode | Typologie | Description |
|---|---|---|
| CDC_ERR_SYS_MAX_NUMBER_OF_WORKERS_REACHED | S | Maximum aantal werknemers bereikt |
| CDC_FOUT_SYS_MAXIMUM_AANTAL_PUBLICATIES_BEREIKT | S | Maximum aantal publicaties voor de database bereikt |
| CDC_ERR_SYS_ONELAKE_PERMISSION_DENIED | S | Machtiging geweigerd voor OneLake-actie |
| CDC_ERR_SYS_ONELAKE_ARTIFACT_DOES_NOT_EXIST | S | OneLake-artefact is niet gevonden |
| CDC_ERR_SYS_ONELAKE_COMM_FAILED | S | OneLake-communicatie is mislukt |
| CDC_ERR_SYS_ONELAKE_BAD_REQUEST | S | Verkeerd verzoek naar OneLake |
| CDC_ERR_PUB_SNAPSHOT_TIMEOUT | P | Momentopname niet gereed na time-out |
| CDC_ERR_PUB_SNAPSHOT_WORKER_TIMEOUT | P | Time-out voor momentopname van een worker voor een specifieke tabel |
| CDC_ERR_PUB_ONELAKE_TOEGANG_GEWEIGERD | P | Machtiging geweigerd voor OneLake-actie |
| CDC_ERR_PUB_ONELAKE_ARTIFACT_DOES_NOT_EXIST | P | OneLake-artefact is niet gevonden |
| CDC_ERR_PUB_ONELAKE_COMM_FAILED | P | De communicatie met OneLake is gefaald |
| CDC_ERR_PUB_MAX_NUMBER_OF_WORKERS_REACHED | P | Maximaal aantal werknemers bereikt voor de publicatie |
| CDC_ERR_PUB_ONELAKE_BAD_REQUEST | P | Foute aanvraag naar OneLake |
| CDC_ERR_PUB_TOO_MANY_ERRORS | P | Te veel fouten tijdens de publicatieverwerking |
| CDC_ERR_TABLE_TRUNCATE_NOT_SUPPORTED | T | Afkappen wordt niet ondersteund (kan leiden tot inconsistentie van gegevens) |
Voer de volgende query uit om te controleren of de publicatie juist is gemaakt en of de replicatie juist verloopt.
select * from azure_cdc.tracked_publications;Controleer of de publicatie actief is en er een momentopname is gegenereerd. U kunt ook controleren of volgende wijzigingsbatches zijn gegenereerd door query's uit te voeren:
select * from azure_cdc.tracked_batches;Als in de
azure_cdc.tracked_publicationsweergave geen voortgang wordt weergegeven bij het verwerken van incrementele wijzigingen, voert u de volgende SQL-query uit om te controleren of er problemen zijn gerapporteerd:SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';Als er geen problemen zijn gerapporteerd, voert u de volgende opdracht uit om de huidige configuratie van de gespiegelde PostgreSQL-database te controleren. Controleer of deze juist is ingeschakeld.
SELECT * FROM pg_replication_slots;De belangrijkste kolommen die u hier kunt zoeken, zijn de
slot_nameenactive. Elke waarde naastt(true) geeft een potentieel probleem aan.Neem contact op met de ondersteuning als probleemoplossing is vereist.
Beheerde identiteit
De door het systeem toegewezen beheerde identiteit (SAMI) van de flexibele Azure Database for PostgreSQL-server moet zijn ingeschakeld en moet de primaire identiteit zijn. Zie De door het systeem toegewezen beheerde identiteit voor flexibele PostgreSQL-server voor meer informatie.
Als na het inschakelen de SAMI-instellingsstatus later is uitgeschakeld en opnieuw is ingeschakeld, mislukt het spiegelen van flexibele Azure Database for PostgreSQL-server naar Fabric OneLake.
Controleer of de SAMI is ingeschakeld met de volgende query: show azure.service_principal_id;
SAMI-machtigingen
Verwijder geen bijdragerrechten van Azure Database for PostgreSQL Flexible Server System Assigned Managed Identity (SAMI) van het gespiegelde database-item van Fabric.
Als u per ongeluk SAMI-machtigingen verwijdert, werkt het spiegelen van Azure Database for PostgreSQL - flexibele server niet zoals verwacht. Er kunnen geen nieuwe gegevens worden gespiegeld vanuit de brondatabase.
Als u SAMI-machtigingen voor de flexibele server van Azure Database for PostgreSQL verwijdert of deze niet correct zijn ingesteld, volgt u de volgende stappen.
- Voeg de flexibele server SAMI toe als gebruiker door de
...optie beletselteken op het gespiegelde database-item te selecteren. - Selecteer de optie Machtigingen beheren .
- Voer de naam in van de flexibele Azure Database for PostgreSQL-server. Geef lees - en schrijfmachtigingen op.