Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel werden die Schritte zur Fehlerbehebung bei der Replikation der Azure Database für PostgreSQL Flexible Server behandelt.
Problembehebung bei Fehler- oder Warnmeldungen während der Tabellenauswahl zur Spiegelung
Wenn Sie eine neue gespiegelte Datenbank erstellen, erhalten Sie auf der Seite " Daten auswählen " möglicherweise ein visuelles Feedback zu bestimmten Tabellen in der Quelldatenbank. Die folgende Tabelle enthält eine Liste potenzieller Probleme, einschließlich der angezeigten Meldung und der zugehörigen Beschreibung zur Lösung des Problems.
| Statuscode | Statustyp | Nachricht | Description |
|---|---|---|---|
SCHEMA_DOES_NOT_EXIST |
FEHLER | Schema {} ist nicht vorhanden | Angegebenes Schema ist nicht vorhanden. Es könnte entfernt worden sein, während Fabric relevante Tabelleninformationen auszog. Wiederholen Sie den Vorgang. |
TABLE_DOES_NOT_EXIST |
FEHLER | In Schema {}ist die Tabelle {} nicht vorhanden. | Die angegebene Tabelle ist nicht vorhanden. Es könnte entfernt worden sein, während Fabric relevante Tabelleninformationen abrufte. Wiederholen Sie den Vorgang. |
FORBIDDEN_CHARS_IN_COLUMN_NAME |
FEHLER | Tabelle {}.{} enthält unzulässige Zeichen im Namen von Spalten. {} | Die angegebene Spalte hat ein nicht unterstütztes Zeichen im Spaltennamen. 1 |
UNSUPPORTED_DATA_TYPE |
FEHLER | Tabelle {}.{} hat nicht unterstützten Datentyp in Spalte {} | Eine (oder mehrere) Spalten der Tabelle weisen derzeit nicht unterstützte Datentypen auf. 3 |
FORBIDDEN_CHARS_IN_TABLE_NAME |
FEHLER | Tabelle {}.{} enthält unzulässige Zeichen im Namen. | Der Tabellenname enthält nicht unterstützte Zeichen. 1 |
NOT_REGULAR_TABLE |
FEHLER | Tabelle {}. ist keine reguläre Tabelle.{} | Der Tabellentyp wird für die Datenbankspiegelung nicht unterstützt. 2 |
HAS_PRIMARY_KEY |
OKAY | Tabelle {}.{} hat einen Primärschlüssel | Tabelle ist eine reguläre Tabelle und verfügt über einen gültigen Primärschlüssel, der für die Spiegelung verwendet wird. |
HAS_UNIQUE_INDEX |
OKAY | Tabelle {}.{} hat einen geeigneten eindeutigen Index | Die Tabelle verfügt nicht über einen Primärschlüssel, verfügt aber über einen nicht nullfähigen eindeutigen Index, der für die Spiegelung verwendet werden soll. Eindeutige Indizes mit Nullwerten verursachen während der Replikationsphase einen Fehler und werden nicht unterstützt. |
NO_INDEX_FULL_IDENTITY |
WARNUNG | Tabelle {}.{} hat keinen geeigneten eindeutigen Index. Verwenden der vollständigen Identität | Tabelle verfügt nicht über einen Primärschlüssel oder einen eindeutigen Index, daher ist REPLICA IDENTITY FULL erforderlich, um die Spiegelung zu unterstützen, was zu Leistungsproblemen und zusätzlicher WAL-Nutzung führen kann. |
1 Objektbezeichner mit einem Leerzeichen (' ') werden nicht unterstützt.
2 Dieser Tabellentyp wird für die Spiegelung nicht unterstützt. Derzeit werden Ansichten, materialisierte Ansichten, Fremdtabellen und partitionierte Tabellen nicht unterstützt. TimescaleDB-Hypertables werden auch für Fabric-Mirroring nicht unterstützt.
3 Eine Liste der nicht unterstützten Datentypen finden Sie unter "Einschränkungen". Es werden nur Spalten mit folgenden Typen unterstützt:
bigintbigserialbooleanbyteacharactercharacter varyingdatedouble precisionintegernumericrealserialoidmoneysmallintsmallserialtexttime without time zone-
time with time zone(* nicht als Primärschlüssel) timestamp without time zonetimestamp with time zoneuuidxmljsonjsonbinetcidrmacaddrmacaddr8tsvectortsqueryint4rangeint8rangenumrangetsrangetstzrangedaterangecirclelinelsegboxpathpointpolygoninterval
In Postgres werden zwei "Zeit mit Zeitzonen"-Werten, die genau demselben Moment entsprechen, aber in verschiedenen Zeitzonen als unterschiedlich betrachtet. Zum Beispiel: 06:24:00.59+05 und 05:24:00.59+04 entspricht der gleichen Epochenzeit, aber Postgres behandelt sie anders.
Standardmäßige nicht eingeschränkte numerische Spalten in Quelldatenbankschemas (ohne definierte Genauigkeit und Skalierung) werden in "Decimal128(38, 0)" konvertiert, bevor sie in OneLake-Tabellen repliziert werden und an der SQL-Standardkonvention ausgerichtet werden, die nicht angegebene Skalierung eine ganzzahlige Genauigkeit bedeutet.
Datendefinitionssprache (Data Definition Language, DDL)-Vorgänge, die in der Quelldatenbank unterstützt werden
- Spalte umbenennen: Eine Spalte mit dem neuen Namen wird der gespiegelten Tabelle in Fabric hinzugefügt und enthält Daten für neu eingefügte Zeilen (für bestehende Zeilen enthält sie NULL). Alte Spalte wird weiterhin mit Werten für die vorhandenen Zeilen beibehalten (für neue Zeilen ist NULL).
- Spalte hinzufügen: Die hinzugefügte Spalte ist in der gespiegelten Tabelle sichtbar und enthält Daten für neu eingefügte Zeilen (für vorhandene Zeilen sind NULL).
- Spalte entfernen: Entfernte Spalte bleibt in der gespiegelten Tabelle sichtbar und enthält Daten für vorhandene Zeilen (für neue Zeilen sind NULL).
- Primärschlüssel ändern: Die Spiegelungssitzung läuft regelmäßig weiter.
Alle anderen DDL-Vorgänge in Quelltabellen werden derzeit nicht unterstützt und können Replikationsfehler verursachen.
Änderungen an Fabric-Kapazität oder -Arbeitsbereich
| Ursache | Ergebnis | Empfohlene Lösung |
|---|---|---|
| Fabric-Kapazität angehalten/gelöscht | Spiegelung stoppen | 1. Kapazität aus dem Azure-Portal wieder aufnehmen oder zuweisen Wechseln Sie zu dem gespiegelten Datenbankelement von Fabric. Wählen Sie auf der Symbolleiste die Option "Replikation beenden" aus. 3. Starten Sie die Replikation, indem Sie die Spiegeldatenbank für das gespiegelte Element im Fabric-Portal auswählen. |
| Die Fabric-Kapazität wurde fortgesetzt | Die Spiegelung wird nicht fortgesetzt. | 1. Wechseln Sie zum gespiegelten Fabric-Datenbankelement. Wählen Sie auf der Symbolleiste die Option "Replikation beenden" aus. 2. Starten Sie die Replikation, indem Sie die Spiegeldatenbank für das gespiegelte Element im Fabric-Portal auswählen. |
| Arbeitsbereich gelöscht | Die Spiegelung wird automatisch beendet. | Wenn die Spiegelung weiterhin auf der flexiblen Azure-Datenbank für PostgreSQL-Server aktiv ist, melden Sie sich als Serveradministrator an und führen Sie die folgenden Befehle auf Ihrem PostgreSQL-Server aus: select azure_cdc.list_tracked_publications();, verwenden Sie dann den zurückgegebenen Publikationsnamen und führen Sie select azure_cdc.stop_publication(<publication_name>); aus. |
| Die Fabric-Testkapazität ist abgelaufen. | Die Spiegelung wird automatisch beendet. | Siehe Fabric-Testkapazität läuft ab. |
| Fabric-Kapazität überschritten | Spiegelung von Pausen | Warten Sie, bis der Überlastungszustand abgelaufen ist, oder aktualisieren Sie Ihre Kapazität. Erfahren Sie mehr über Aktionen, die Sie ausführen können, um aus Überlastungssituationen wiederherzustellen. Die Spiegelung wird fortgesetzt, sobald die Kapazität wiederhergestellt wurde. |
| Alle anderen Ressourcenfehler | Spiegelung ist deaktiviert | Um sicherzustellen, dass Ihre Computeressourcen nicht betroffen sind und die Auswirkungen auf den flexiblen Azure-Datenbankserver für PostgreSQL minimiert werden, deaktiviert die Spiegelung alle persistenten Ressourcenfehler. |
| Die Option "Benutzer können auf Daten zugreifen, die in OneLake gespeichert sind, mit Apps außerhalb von Fabric" ist deaktiviert. | "Replizierer – Tabellen können den Replikationsstatus nicht erreichen" | Aktivieren Sie die Mandanteneinstellung Benutzer können mit Apps außerhalb von Fabric auf Daten zugreifen, die in OneLake gespeichert sind. |
SQL-Abfragen zur Problembehandlung
Wenn Spiegelungsprobleme auftreten, stellen Sie eine Verbindung mit der Quelle Azure Database for PostgreSQL Server her, und führen Sie diese Überprüfungen mithilfe von Systemansichten und Funktionen aus, um die Konfiguration zu überprüfen.
- Führen Sie die folgende Abfrage aus, um zu überprüfen, ob alle Voraussetzungen erfüllt sind, bevor Sie die CDC-Spiegelung starten. Diese Funktion überprüft verschiedene System- und Konfigurationsanforderungen, um sicherzustellen, dass der Server für CDC-Vorgänge bereit ist.
-- 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"}]
Rückgabewerte:(status text, data jsonb)
-
status: Gesamtstatus -OKwenn alle Prüfungen bestehen,ERRORwenn eine Überprüfung fehlschlägt -
data: JSONB-Array mit detaillierten Statuseinträgen mitstatus,status_codeund optionaldetails
Statuscodes:
| Statuscode | Ebene | Description |
|---|---|---|
| IDENTITY_NOT_CONFIGURED | FEHLER | Dienstprinzipal-Anmeldedaten sind nicht konfiguriert (azure.service_principal_id oder azure.service_principal_tenant_id GUCs sind nicht festgelegt) |
| CDC_ADMIN_ROLE_NOT_EXISTS | FEHLER | Die rolle "azure_cdc_admin" ist in der Datenbank nicht vorhanden. |
| USER_NOT_CDC_ADMIN | FEHLER | Der aktuelle Benutzer verfügt nicht über die rolle "azure_cdc_admin" |
| KEIN_ERSTELLUNGSRECHT_IN_DER_DATENBANK | FEHLER | Der aktuelle Benutzer verfügt nicht über CREATE-Berechtigungen für die Datenbank. |
| PUBLIKATIONSLIMIT_ERREICHT | FEHLER | Die maximale Anzahl von Publikationen (1) wurde für die Datenbank erreicht. |
| SERVER_IN_WIEDERHERSTELLUNG | FEHLER | Server ist ein Standby-Replikat im Wiederherstellungsmodus (CDC-Spiegelung wird nicht in Standbys unterstützt) |
| MAX_WORKER_PROCESSES_TOO_LOW | FEHLER | max_worker_processes liegt unter dem empfohlenen Schwellenwert (13) |
- Führen Sie die folgende Abfrage aus, um zu überprüfen, ob Tabellen in Ihrer Quelldatenbank für die Replikation berechtigt sind. Schließt Systemschemas (
pg_catalog,information_schema,pg_toast) und Erweiterungstabellen aus.
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"}]
Gibt zurück: Menge von (table_schema text, table_name text, mirroring_status text, mirroring_data jsonb)
-
table_schema: Schemaname der Tabelle -
table_name: Name der Tabelle -
mirroring_status: Gesamtstatus -OK,WARNING, oderERROR -
mirroring_data: JSONB-Array mit detaillierten Statuseinträgen mitstatus,status_codeund optionaldetails
Statuscodes:
| Statuscode | Ebene | Description |
|---|---|---|
| SCHEMA_EXISTIERT_NICHT | FEHLER | Das angegebene Schema ist nicht vorhanden. |
| TABLE_EXISTIERT_NICHT | FEHLER | Die angegebene Tabelle ist im Schema nicht vorhanden. |
| VERBOTENE_ZEICHEN_IN_SPALTENNAMEN | FEHLER | Spaltennamen enthalten unzulässige Zeichen (z. B. Leerzeichen) |
| VERBOTENE_ZEICHEN_IM_TABELLENNAMEN | FEHLER | Der Tabellenname enthält unzulässige Zeichen. |
| UNSUPPORTED_DATA_TYPE | WARNUNG | Tabelle enthält Spalten mit nicht unterstützten Datentypen |
| UNSUPPORTED_TYPE_IN_REPLICA_IDENTITY | FEHLER | Nicht unterstützter Datentyp in Replikatidentitätsspalten (wenn kein eindeutiger Index vorhanden ist) |
| NOT_REGULAR_TABLE | FEHLER | Tabelle ist keine normale, permanente Tabelle (z. B. Ansicht, temporäre, Partition) |
| NICHT_TABELLENBESITZER | FEHLER | Der aktuelle Benutzer ist nicht der Besitzer der Tabelle. |
| HAT_PRIMÄRSCHLÜSSEL | OKAY | Tabelle hat einen Primärschlüssel |
| HAS_UNIQUE_INDEX | OKAY | Tabelle weist einen geeigneten eindeutigen Index auf |
| NO_INDEX_FULL_IDENTITY | WARNUNG | Kein geeigneter eindeutiger Index; Vollständige Zeilenidentität wird verwendet (kann sich auf die Leistung auswirken) |
- Führen Sie die folgende Abfrage aus, um Fehler und Probleme zurückzugeben, die bei Replikationsvorgängen erkannt wurden, einschließlich systemweiter Fehler, publikationsspezifischer Fehler und Fehler pro Tabelle.
-- 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');
Parameter:
-
db_name(text): Datenbankname -
pub_name(text): Publikationsname
Benehmen:
- Wird mit leeren Zeichenfolgen für beide Parameter aufgerufen (
azure_cdc.get_health_status('', '')): Gibt nur systemweite Fehler zurück (Fehlertyp 'S'). - Wird mit gültigen Datenbank- und Publikationsnamen aufgerufen: Gibt sowohl systemweite Fehler als auch publikationsspezifische Fehler/Tabellenspezifische Fehler für die angegebene Publikation zurück.
Gibt zurück: Menge von (error_time timestamptz, schema_name text, table_name text, error_type char(1), error_code text, params jsonb)
Fehlertypen:
| Fehlertyp | Description |
|---|---|
| S | Systemweiter Fehler |
| P | Publikationsspezifischer Fehler |
| T | Tabellenspezifischer Fehler |
Fehlercodes:
| Fehlercode | Typ | Description |
|---|---|---|
| CDC_ERR_SYS_MAX_NUMBER_OF_WORKERS_REACHED - Die maximale Anzahl von Arbeitern im System wurde erreicht. | S | Maximale Anzahl der Arbeiter erreicht |
| CDC_ERR_SYS_MAX_NUMBER_OF_PUBLICATIONS_REACHED | S | Maximale Anzahl von Publikationen für die Datenbank erreicht |
| CDC_ERR_SYS_ONELAKE_PERMISSION_DENIED | S | Berechtigung verweigert für OneLake-Aktion |
| CDC_ERR_SYS_ONELAKE_ARTIFACT_DOES_NOT_EXIST | S | OneLake-Artefakt nicht gefunden |
| CDC_ERR_SYS_ONELAKE_COMM_FAILED | S | OneLake-Kommunikation fehlgeschlagen |
| CDC_ERR_SYS_ONELAKE_FEHLERHAFTE_ANFRAGE | S | Ungültige Anforderung an OneLake |
| CDC_ERR_PUB_SNAPSHOT_TIMEOUT | P | Nach Timeout ist die Momentaufnahme nicht bereit. |
| CDC_ERR_PUB_SNAPSHOT_WORKER_TIMEOUT | P | Snapshot-Worker-Timeout für eine bestimmte Tabelle |
| CDC_ERR_PUB_ONELAKE_PERMISSION_DENIED | P | Berechtigung verweigert für OneLake-Aktion |
| CDC_ERR_PUB_ONELAKE_ARTIFACT_DOES_NOT_EXIST | P | OneLake-Artefakt nicht gefunden |
| CDC_ERR_PUB_ONELAKE_COMM_FAILED | P | OneLake-Kommunikation fehlgeschlagen |
| CDC_ERR_PUB_MAX_ANZAHL_DER_ARBEITER_ERREICHT | P | Maximale Anzahl der für die Veröffentlichung erreichten Arbeitskräfte |
| CDC_ERR_PUB_ONELAKE_BAD_REQUEST | P | Ungültige Anforderung an OneLake |
| CDC_ERR_PUB_TOO_MANY_ERRORS | P | Zu viele Fehler während der Publikationsverarbeitung |
| CDC_ERR_TABELLE_VERKÜRZUNG_UNTERSTÜTZT_NICHT | T | Abschneiden des Vorgangs nicht unterstützt (kann dazu führen, dass Daten inkonsistent sind) |
Führen Sie die folgende Abfrage aus, um zu überprüfen, ob die Publikation ordnungsgemäß erstellt wurde und replikationsänderungen ordnungsgemäß ablaufen:
select * from azure_cdc.tracked_publications;Überprüfen Sie, ob die Publikation aktiv ist und Momentaufnahmen generiert wurden. Sie können auch überprüfen, ob nachfolgende Änderungsbatches durch Abfragen generiert wurden:
select * from azure_cdc.tracked_batches;Wenn in der Ansicht keine Fortschritte bei der
azure_cdc.tracked_publicationsVerarbeitung inkrementeller Änderungen angezeigt werden, führen Sie die folgende SQL-Abfrage aus, um zu überprüfen, ob Probleme gemeldet werden:SELECT * FROM pg_stat_activity WHERE state = 'idle in transaction';Wenn keine Probleme gemeldet werden, führen Sie den folgenden Befehl aus, um die aktuelle Konfiguration der gespiegelten PostgreSQL-Datenbank zu überprüfen. Bestätigen Sie, dass sie ordnungsgemäß aktiviert war.
SELECT * FROM pg_replication_slots;Die wichtigsten Spalten, nach denen gesucht werden soll, sind
slot_nameundactive. Ein beliebiger Wert nebent(true) gibt ein potenzielles Problem an.Wenden Sie sich an den Support, wenn eine Problembehandlung erforderlich ist.
Verwaltete Identität
Die vom System zugewiesene verwaltete Identität (System Assigned Managed Identity, SAMI) des flexiblen Azure-Datenbankservers für PostgreSQL muss aktiviert und die primäre Identität sein. Weitere Informationen finden Sie unter Systemzugewiesene verwaltete Identität für PostgreSQL Flexible Server.
Nach der Aktivierung, wenn der SAMI-Einstellungsstatus später deaktiviert und dann erneut aktiviert wird, schlägt die Spiegelung der Azure Database für PostgreSQL-Flexiblen-Server in Fabric OneLake fehl.
Stellen Sie sicher, dass das SAMI mit der folgenden Abfrage aktiviert ist: show azure.service_principal_id;
SAMI-Berechtigungen
Entfernen Sie keine Mitwirkendenberechtigungen der Azure-Datenbank für PostgreSQL Flexible Server System Assigned Managed Identity (SAMI) auf dem Element der Fabric-Spiegeldatenbank.
Wenn Sie versehentlich SAMI-Berechtigungen entfernen, funktioniert der flexible Server mit Spiegelung der Azure-Datenbank für PostgreSQL nicht wie erwartet. Es können keine neuen Daten aus der Quelldatenbank gespiegelt werden.
Wenn Sie die SAMI-Berechtigungen der Azure-Datenbank für PostgreSQL Flexible Server entfernen oder diese nicht ordnungsgemäß eingerichtet sind, führen Sie die folgenden Schritte aus.
- Fügen Sie den flexiblen Server namens SAMI als Benutzer hinzu, indem Sie die Option mit den
...Auslassungszeichen für das gespiegelte Datenbankelement auswählen. - Wählen Sie die Option "Berechtigungen verwalten" aus.
- Geben Sie den Namen der Azure-Datenbank für den flexiblen Server für PostgreSQL ein. Bereitstellen von Lese - und Schreibberechtigungen .