Wenn Sie Schema, Daten und Metadaten von einer Quelldatenbank zu einer Zieldatenbank migrieren, möchten Sie sicherstellen, dass alle Informationen korrekt migriert werden. Database Migration Service bietet einen zuverlässigen Mechanismus zum Migrieren von Datenbankobjekten (einschließlich Schema, Daten und Metadaten) von PostgreSQL zu AlloyDB for PostgreSQL.
Während des Migrationsprozesses werden Daten und Einschränkungen in strukturierten Phasen migriert. Die Daten werden zuerst während des ersten Snapshot-Ladevorgangs migriert. Einschränkungen wie Primärschlüssel, Fremdschlüssel und Indexe werden nach Abschluss des ersten Ladevorgangs im Zielcluster neu erstellt.
Die folgenden Daten-, Schema- und Metadatenkomponenten werden im Rahmen der Datenbankmigration migriert:
Daten
Alle Tabellen und Schemas aus Datenbanken, die für die Migration ausgewählt wurden, mit Ausnahme der folgenden Systemschemas:
- Das Informationsschema (
information_schema) - Alle Schemas, die mit
pg_beginnen (z. B.pg_catalog,pg_toast)
Weitere Informationen zu diesen Systemschemas finden Sie unter Bekannte Einschränkungen.
Sie können während einer laufenden Migration Datenbanken zu einem Migrationsjob hinzufügen oder daraus entfernen. Wenn Sie eine Datenbank entfernen, wird die Replikation für diese Datenbank beendet, ohne dass die bereits migrierte Datenbank im Zielcluster gelöscht wird. Weitere Informationen finden Sie unter Migrationsjob bearbeiten.
- Das Informationsschema (
Schema
Objektbenennung
Primärschlüssel
Datentypen
Ordinale Spaltenpositionen
Standardwerte
Null-Zulässigkeit
Identitäts- und Serienattribute
Sekundäre Indexe
Metadaten
Gespeicherte Prozeduren
Funktionen
Trigger
Aufrufe
Fremdschlüsselbeschränkungen
Kontinuierliche Migration
DML-Änderungen (Datenbearbeitungssprache) wie INSERT-, UPDATE- und DELETE-Vorgänge für Tabellen mit einem Primärschlüssel oder einer Replikatidentität werden bei kontinuierlichen Migrationen automatisch repliziert.
Wenn während des Migrationsprozesses Änderungen an der Datendefinitionssprache (DDL) in Ihrer Quelldatenbank vorgenommen werden, müssen Sie Ihren Zielcluster aktualisieren, damit Ihre Datenbanken kompatibel bleiben. Sie können die DDL-Änderungen auf folgende Weise vornehmen:
Manuelle DDL-Ausführung: Beenden Sie Schreibvorgänge in der Quelldatenbank, führen Sie die DDL-Befehle in der Quelldatenbank aus und führen Sie die entsprechenden DDL-Befehle in der Zieldatenbank aus. Bevor Sie DDL-Befehle auf dem Ziel ausführen, weisen Sie dem AlloyDB for PostgreSQL-Nutzer, der die Änderungen anwendet, die Rolle
alloydbexternalsynczu.Replizierte DDL-Befehle mit
pglogical: Sie könnenpglogical.replicate_ddl_commandverwenden, um DDL sowohl auf der Quell- als auch auf der Zieldatenbank an einem konsistenten Punkt im Replikationsstream auszuführen. Das Konto, das diesen Befehl ausführt, muss sowohl auf der Quell- als auch auf der Zielinstanz übereinstimmende Anmeldedaten haben und ein Superuser oder der Inhaber des geänderten Objekts sein.
Die folgenden Tabs enthalten SQL-Beispielbefehle für gängige DDL-Vorgänge mit pglogical.replicate_ddl_command:
Tabellen mit Primärschlüsseln
Spalte zu einer Tabelle mit einem Primärschlüssel hinzufügen
SELECT pglogical.replicate_ddl_command( 'ALTER TABLE [SCHEMA].[TABLE_NAME] ADD COLUMN surname varchar(20)', '{default}' );
Name einer Tabelle mit einem Primärschlüssel ändern
SELECT pglogical.replicate_ddl_command( 'ALTER TABLE [SCHEMA].[TABLE_NAME] RENAME TO [NEW_NAME_FOR_TABLE]', '{default}' );
Tabelle mit einem Primärschlüssel erstellen
Führen Sie die folgenden Befehle in der Quelldatenbank aus:
SELECT pglogical.replicate_ddl_command( command := 'CREATE TABLE [SCHEMA].[TABLE_NAME] (id INTEGER PRIMARY KEY, name VARCHAR);', replication_sets := ARRAY['default'] ); SELECT pglogical.replication_set_add_table('default', '[SCHEMA].[TABLE_NAME]');
Tabellen ohne Primärschlüssel
Spalte zu einer Tabelle ohne Primärschlüssel hinzufügen
SELECT pglogical.replicate_ddl_command( 'ALTER TABLE [SCHEMA].[TABLE_NAME] ADD COLUMN surname varchar(20)', '{default_insert_only}' );
Name einer Tabelle ohne Primärschlüssel ändern
SELECT pglogical.replicate_ddl_command( 'ALTER TABLE [SCHEMA].[TABLE_NAME] RENAME TO [NEW_NAME_FOR_TABLE]', '{default_insert_only}' );
Tabelle ohne Primärschlüssel erstellen
Führen Sie die folgenden Befehle in der Quelldatenbank aus:
SELECT pglogical.replicate_ddl_command( command := 'CREATE TABLE [SCHEMA].[TABLE_NAME] (id INTEGER, name VARCHAR);', replication_sets := ARRAY['default_insert_only'] ); SELECT pglogical.replication_set_add_table('default_insert_only', '[SCHEMA].[TABLE_NAME]');
Was wird nicht migriert?
Nutzer und Berechtigungen: Anmeldedaten und Rollen von Nutzern werden nicht migriert. Wenn Sie zum ersten Mal eine Verbindung zu einem neuen Zielcluster herstellen, verwenden Sie das
postgres-Konto. Da es sich um einen verwalteten Dienst handelt, können PostgreSQL-Nutzer in AlloyDB for PostgreSQL keineSUPERUSER-Berechtigungen haben. Weitere Informationen finden Sie in der AlloyDB for PostgreSQL-Dokumentation unter Datenbanknutzer verwalten.Nicht unterstützte Erweiterungen: Database Migration Service migriert keine Erweiterungen, die von AlloyDB for PostgreSQL nicht unterstützt werden. Das Vorhandensein dieser Erweiterungen blockiert den Migrationsjob nicht, aber bei Anwendungen, die auf nicht unterstützte Erweiterungen verweisen, können Fehler auftreten. Eine Liste der unterstützten Erweiterungen finden Sie in der AlloyDB for PostgreSQL-Dokumentation unter Unterstützte Datenbankerweiterungen.
Große Objekte: Große PostgreSQL-Objekte (Datentyp
oid, der aufpg_largeobjectverweist) werden nicht durch logische Decodierung repliziert.Tabellen ohne Primärschlüssel: Database Migration Service migriert den ersten Snapshot und repliziert
INSERT-Anweisungen während der CDC-Phase. FürUPDATE- undDELETE-Anweisungen:Standardmigrationen: Bei Standardmigrationen müssen Ihre Tabellen Primärschlüssel haben, um
UPDATE- undDELETE-Anweisungen zu replizieren.Schnellstart-Migrationen: Bei Schnellstart-Migrationen sind keine Primärschlüssel erforderlich, um
UPDATE- undDELETE-Vorgänge zu replizieren, wenn Sie die Replikatidentität aufINDEXoderFULLfestlegen. Durch die Konfiguration vonREPLICA IDENTITY FULLerhöht sich das WAL-Volumen (Write-Ahead Log) und der Ressourcenaufwand. Es wird empfohlen, nach Möglichkeit einen Primärschlüssel hinzuzufügen. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation zur Replikatidentität und im Schnellstart-Migrationsleitfaden.
Materialisierte Ansichten: Database Migration Service migriert Definitionen materialisierter Ansichten, aber nicht die zugrunde liegenden im Cache gespeicherten Daten. Führen Sie nach der Migration
REFRESH MATERIALIZED VIEW view_nameaus, um materialisierte Ansichten am Ziel zu füllen.Sequenzstatus: Die aktuellen Werte von Sequenzen (z. B.
last_value) im Zielcluster können sich während des laufenden CDC von der Quelle unterscheiden. Sequenzwerte werden während des letzten Hochstufungsschritts synchronisiert.Benutzerdefinierte Tablespaces: AlloyDB for PostgreSQL unterstützt keine benutzerdefinierten Tablespaces. In benutzerdefinierten Tablespaces definierte Objekte werden in AlloyDB for PostgreSQL automatisch dem Standard-Tablespace
pg_defaultzugeordnet.
Nächste Schritte
Ausführliche Informationen zu den Einschränkungen finden Sie unter Bekannte Einschränkungen.
Eine Anleitung zur Migration finden Sie unter Erste Schritte mit AlloyDB for PostgreSQL-Migrationen.