Auf dieser Seite wird beschrieben, wie Sie Ihren externen Server für die Replikation in Cloud SQL konfigurieren, eine Quelldarstellungsinstanz in Cloud SQL erstellen und die Daten in Cloud SQL replizieren. Sie müssen alle Schritte auf dieser Seite ausführen, bevor Sie mit den Replikationsschritten fortfahren.
Eine Alternative zu den auf dieser Seite beschriebenen Schritten ist der Database Migration Service. Dieser ermöglicht eine kontinuierliche Replikation oder eine einmalige Datenbankmigration von einem externen Server zu Cloud SQL.
Hinweis
Terminologie
Externer Server. Der PostgreSQL-Server außerhalb von Cloud SQL, von dem Sie Daten replizieren möchten. Er wird auch als Quelldatenbank oder externer Datenbankserver bezeichnet. Dies kann eine andere Cloud SQL-Instanz oder ein anderer Datenbankserver sein, z. B. der lokale Amazon Relational Database Service (RDS) usw.
Quelldarstellungsinstanz. Die Simulation einer Cloud SQL-Instanz, die den externen Server für das Cloud SQL-Replikat darstellt. Sie ist in der Google Cloud Console sichtbar und sieht wie eine normale Cloud SQL-Instanz aus. Sie enthält jedoch keine Daten, erfordert keine Konfiguration oder Wartung und wirkt sich nicht auf die Abrechnung aus.
Cloud SQL-Replikat. Cloud SQL-Instanz, die vom externen Server repliziert wird. Sie wird auch als externes primäres Lesereplikat bezeichnet.
Nutzerkonto für die Replikation. Das PostgreSQL-Nutzerkonto auf dem externen Server mit den erforderlichen Berechtigungen, um die Replikation zwischen dem externen Server und dem Cloud SQL-Replikat auszuführen.
Verwalteter Import. Vorgang, bei dem Daten direkt vom externen Server in das Cloud SQL-Replikat importiert werden. In diesem Fall stellt Cloud SQL über das Nutzerkonto für die Replikation eine Verbindung zum externen Server her und führt den Datendump direkt auf dem externen Server aus, um Daten in das Cloud SQL-Replikat zu importieren.
Google Cloud-Projekt einrichten
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud SQL Admin API.
-
Sie benötigen für Ihr Nutzerkonto die Rollen „Cloud SQL-Administrator“, „Storage-Administrator“ und „Compute-Betrachter“.
Google Cloud SDK installieren
Zum Konfigurieren der Replikation installieren Sie das Google Cloud SDK für Ihren externen Server. Sie können das SDK auf Ihrem externen Server installieren, sofern es nicht bereits an einem anderen Speicherort installiert ist.
Externen Server für die Replikation einrichten
Cloud SQL unterstützt kontinuierliche Migrationen von Quelldatenbanken zu Cloud SQL-Zieldatenbanken.
Zu den unterstützten Quelldatenbanken für PostgreSQL gehören:
- Selbstverwaltet (lokal oder auf einer beliebigen von Ihnen verwalteten Cloud-VM) PostgreSQL 9.4, 9.5, 9.6, 10, 11, 12, 13, 14, 15 und 16
- Amazon RDS 9.6.10+, 10.5+, 11.1+, 12, 13, 14, 15 und 16
- Amazon Aurora 10.11 und höher, 11.6 und höher, 12.4 und höher sowie 13.3 und höher, 14, 15 und 16
- Cloud SQL 9.6, 10, 11, 12, 13, 14, 15 und 16
Zum Konfigurieren Ihrer Quelle müssen Sie sowohl die Quellinstanz als auch die zugrunde liegenden Quelldatenbanken konfigurieren.
Checkliste für externen Server
Wenn das Cloud SQL-Replikat mit einer privaten IP-Adresse aktiviert ist, da die ausgehende private IP-Adresse nicht statisch ist, konfigurieren Sie die Firewall des externen Servers so, dass sie den internen IP-Bereich zulässt, der für den Zugriff auf private Dienste des VPC-Netzwerks zugewiesen wurde, das das Cloud SQL-Replikat als sein privates Netzwerk verwendet.
Die Firewall des Quelldatenbankservers muss so konfiguriert sein, dass sie den gesamten internen IP-Adressbereich zulässt, der für die private Dienstverbindung des VPC-Netzwerks zugewiesen ist, das die Cloud SQL-Zielinstanz als Feld privateNetwork ihrer ipConfiguration-Einstellungen verwendet.
So finden Sie den internen IP-Bereich:
Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.
Wählen Sie das VPC-Netzwerk aus, das Sie verwenden möchten.
Klicken Sie auf den Tab Private Dienstverbindung.
Quellinstanz konfigurieren
So konfigurieren Sie Ihre Quellinstanz:
- Erstellen Sie Datenbank
postgres
, wenn die Quellinstanz sie nicht enthält. - pglogical-Paket auf der Quellinstanz installieren
Legen Sie nach Bedarf die folgenden Parameter fest.
Fügen Sie diese Parameter in eine neue Parametergruppe ein und hängen die Parametergruppe an die Instanz an, wenn die PostgreSQL-Quellinstanz Amazon RDS ist.
Setzen Sie die Flags
cloudsql.logical_decoding
undcloudsql.enable_pglogical
aufon
, wenn die Quelle Cloud SQL ist.Informationen zum Aktivieren von Flags in Cloud SQL finden Sie unter Datenbank-Flags konfigurieren.
Legen Sie mit dem folgenden Befehl
shared_preload_libraries
so fest, dasspglogical
eingeschlossen wird:ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
Legen Sie
wal_level
mit dem folgenden Befehl auflogical
fest:ALTER SYSTEM SET wal_level = 'logical';
Setzen Sie den Parameter
rds.logical_replication
auf1
, um WAL-Logs auf der Ebenelogical
zu aktivieren, wenn die PostgreSQL-Quellinstanz Amazon RDS ist.Legen Sie
wal_sender_timeout
mit dem folgenden Befehl auf0
fest:ALTER SYSTEM SET wal_sender_timeout = 0;
Der Wert
0
deaktiviert das Zeitlimit, das zum Beenden inaktiver Replikationsverbindungen verwendet wird.Legen Sie für max_replication_slots die maximale Anzahl an Replikations-Slots fest, die von der Quellinstanz unterstützt werden können. Verwenden Sie den folgenden Befehl, nachdem Sie # durch die Nummer ersetzt
ALTER SYSTEM SET max_replication_slots = #;
Cloud SQL erfordert für jede migrierte Datenbank einen Slot. Geben Sie mindestens die Anzahl der Abos an, für die eine Verbindung erwartet wird. Darüber hinaus gelten einige Reservierungen für die Tabellensynchronisierung.
Wenn die Quellinstanz beispielsweise 5 Datenbanken hat und 2 Migrationsjobs für die Quelle erstellt werden, muss die Anzahl der Replikations-Slots zusätzlich zur Anzahl der Replikations-Slots, die Sie bereits verwenden, mindestens 5 * 2 = 10 sein.
Setzen Sie zusätzlich zur Anzahl der Absender, die bereits auf Ihrer Instanz verwendet werden, max_wal_senders auf mindestens
max_replication_slots
. Verwenden Sie den folgenden Befehl und ersetzen Sie # durch die Gesamtzahl der WAL-Senderprozesse, die gleichzeitig ausgeführt werden:ALTER SYSTEM SET max_wal_senders = #;
Wenn für den Parameter
max_replication_slots
beispielsweise der Wert10
festgelegt ist und Sie bereits zwei Absender verwenden, beträgt die Anzahl der gleichzeitig ausgeführten WAL-Senderprozesse 10 + 2. = 12.Setzen Sie zusätzlich zur Anzahl der Worker-Prozesse, die bereits auf der Instanz verwendet werden, max_worker_processes auf mindestens die Anzahl der Datenbanken in der Quellinstanz. Führen Sie den folgenden Befehl aus, nachdem Sie # durch die Gesamtzahl ersetzt haben:
ALTER SYSTEM SET max_worker_processes = #;
- Konfigurieren Sie die Firewall des externen Servers so, dass der interne IP-Bereich zugelassen wird, der dem Zugriff auf private Dienste des VPC-Netzwerks des Replikatknoten zugeordnet ist, wenn das Cloud SQL-Replikat eine private IP-Adresse verwendet.
- Starten Sie die Quellinstanz neu, um die Konfigurationsänderungen zu übernehmen.
Die in diesem Schritt festgelegten Parameter gelten für einen PostgreSQL-Datenbankserver, der ausgeführt wird. Sie können diese Änderungen auch dauerhaft festlegen, indem Sie sie in die Datei postgresql.conf
einfügen.
Replikationsverzögerungsmonitoring für PostgreSQL-Versionen vor 9.6 aktivieren
Wenn Sie von einer PostgreSQL-Version vor 9.6 migrieren, ist der Messwert für die Replikationsverzögerung standardmäßig nicht verfügbar. Sie können eine von drei Alternativen verwenden, um diesen Messwert zu verfolgen und minimale Ausfallzeiten beim Hochstufen der Datenbank zu gewährleisten:
Option 1: Aktivieren Sie den externen Cloud SQL-Server, um die Replikationsverzögerung zu verfolgen, indem Sie Zugriff auf eine bestimmte Abfrage gewähren. Führen Sie einen Nutzer mit der Berechtigung
SUPERUSER
aus:Definieren Sie die folgende Funktion, damit der externe Server die Replikationsverzögerung abfragen kann.
CREATE OR REPLACE FUNCTION pg_stat_replication_user() RETURNS TABLE ( pid integer , usesysid oid , username name , application_name text , client_addr inet , client_hostname text , client_port integer , backend_start timestamp with time zone , backend_xmin xid , state text , sent_location pg_lsn , write_location pg_lsn , flush_location pg_lsn , replay_location pg_lsn , sync_priority integer , sync_state text ) LANGUAGE SQL SECURITY DEFINER AS $$ SELECT * FROM pg_catalog.pg_stat_replication; $$;
Erteilen Sie dem Nutzer die Berechtigung
EXECUTE
, indem Sie die folgenden Befehle ausführen:REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
GRANT EXECUTE ON FUNCTION pg_stat_replication_user() to {replication_user};
Option 2: Erteilen Sie die Berechtigung
SUPERUSER
direkt dem Nutzer, mit dem eine Verbindung zur Quellinstanz hergestellt wurde. Dadurch kann der externe Server die Replikationsverzögerung direkt lesen.Option 3: Verfolgen Sie die Replikationsverzögerung unabhängig mit der folgenden Abfrage:
SELECT current_timestamp, application_name, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.sent_location) AS sent_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.write_location) AS write_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.flush_location) AS flush_location_lag, pg_xlog_location_diff(pg_current_xlog_location(), pg_stat_replication.replay_location) AS replay_location_lag FROM pg_stat_replication WHERE application_name like 'cloudsql%';
Bei dieser Option spiegelt Cloud SQL den Messwert für die Replikationsverzögerung in den Grafiken oder API-Antworten nicht wider.
Quelldatenbanken konfigurieren
Der externe Cloud SQL-Server migriert alle Datenbanken unter Ihrer Quellinstanz außer:
- Für lokale Quellen: Vorlagendatenbanken
template0
undtemplate1
- Für Amazon RDS-Quellen:
template0
,template1
undrdsadmin
- Für Cloud SQL-Quellen: Vorlagendatenbanken
template0
undtemplate1
Führen Sie folgende Schritte für jede Datenbank in Ihrer Quellinstanz aus, die nicht in der obigen Liste enthalten ist:
Führen Sie den folgenden Befehl in jeder Datenbank Ihrer Quellinstanz aus, um die Erweiterung
pglogical
zu installieren:CREATE EXTENSION IF NOT EXISTS pglogical
Bei Tabellen ohne Primärschlüssel unterstützt Cloud SQL die Migration des ersten Snapshots und der
INSERT
-Anweisungen während der Change Data Capture-Phase (CDC). Migrieren Sie die AnweisungenUPDATE
undDELETE
manuell.Stellen Sie eine Verbindung zur Instanz her und führen Sie die folgenden Befehle aus, um Berechtigungen für den Nutzer bei jeder der migrierten Datenbanken sowie bei der Standarddatenbank
postgres
festzulegen.Der Nutzer, den Sie für die Verbindung mit der Quellinstanz verwenden, wird auf der Seite Verbindungsprofile als Nutzer konfiguriert. Sie können einen neuen Nutzer erstellen oder einen vorhandenen verwenden.
Führen Sie den folgenden Befehl in allen Schemas in jeder Datenbank aus, die migriert werden soll, mit Ausnahme des Informationsschemas und der Schemas, die mit
pg_
beginnen:GRANT USAGE on SCHEMA schema to username; GRANT SELECT on ALL SEQUENCES in SCHEMA schema to username; GRANT SELECT on ALL TABLES in SCHEMA schema to username;
Führen Sie in jeder zu migrierenden Datenbank den folgenden Befehl aus:
GRANT USAGE on SCHEMA pglogical to PUBLIC;
Führen Sie den folgenden Befehl aus, um Replikationsinformationen aus Quelldatenbanken in allen Datenbanken abzurufen:
GRANT SELECT on ALL TABLES in SCHEMA pglogical to username;
Wenn die Quelle Amazon RDS ist, führen Sie den folgenden Befehl aus:
GRANT rds_replication to username;
Andernfalls führen Sie den folgenden Befehl aus:
ALTER USER username with REPLICATION;
Quelldarstellungsinstanz einrichten
Die Quelldarstellungsinstanz verweist auf den externen Server. Sie enthält nur die Anfragedaten vom externen Server. Erstellen Sie die Anfragedaten und verwenden Sie sie in einem curl
-Befehl, der die Quelldarstellungsinstanz in Cloud SQL erstellt.
Anfragedaten erstellen
Die Anfragedaten enthalten grundlegende Informationen zu Ihrem Quelldatenbankserver im JSON-Format. Die Anfragedaten können für ein Cloud SQL-Replikat in einem öffentlichen oder privaten Netzwerk konfiguriert werden und sollten folgende Informationen enthalten:
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "hostPort": "SOURCE_HOST", "username": "USERNAME", "password": "PASSWORD", "caCertificate": "SOURCE_CERT", "clientCertificate": "CLIENT_CERT", "clientKey": "CLIENT_KEY" } }
Beispiel für verwalteten Import
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "POSTGRES_9_6",
"onPremisesConfiguration": {
"hostPort": "192.0.2.0:3306",
"username": "replicationUser",
"password": "486#@%*@"
}
}
Attribut | Beschreibung |
---|---|
SOURCE_NAME | Der Name der zu erstellenden Quelldarstellungsinstanz. |
REGION | Die Region, in der sich die Quelldarstellungsinstanz befinden soll. |
DATABASE_VERSION | Die auf dem externen Server ausgeführte Datenbankversion. Die Optionen sind POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 oder POSTGRES_16 . |
SOURCE HOST | Die IPv4-Adresse und der Port für den externen Server oder die DNS-Adresse für den externen Server.
Wenn der externe Server in Cloud SQL gehostet wird, lautet der Port 5432 . |
USERNAME | Das Nutzerkonto für die Replikation auf dem externen Server. |
PASSWORD | Das Passwort des Nutzerkontos für die Replikation. |
BUCKET | Der Name des Buckets, der die Dumpdatei enthält. Nur einschließen, wenn Sie die Replikation mit einer Dumpdatei einrichten, die in einem Cloud Storage-Bucket vorhanden ist. |
DUMP_FILE | Eine Datei in dem Bucket, die die Daten vom externen Server enthält. |
CLIENT_CA_CERT | Das CA-Zertifikat auf dem externen Server. Nur einschließen, wenn auf dem externen Server SSL/TLS verwendet wird. |
CLIENT_CERT | Das Clientzertifikat auf dem externen Server. Nur für die Server-Client-Authentifizierung erforderlich. Nur einschließen, wenn auf dem externen Server SSL/TLS verwendet wird. |
CLIENT_KEY | Die private Schlüsseldatei für das Clientzertifikat auf dem externen Server. Nur für die Server-Client-Authentifizierung erforderlich. Nur einschließen, wenn auf dem externen Server SSL/TLS verwendet wird. |
Quelldarstellungsinstanz erstellen
Erstellen Sie eine JSON-Datei, die Ihre Quellanfragedaten enthält, bevor Sie diesen Schritt ausführen.
Öffnen Sie dann ein Terminal und führen Sie die folgenden Befehle aus, um die Quelldarstellungsinstanz in Cloud SQL zu erstellen:
curl
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
Beispiel
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data @./source.json \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Attribut | Beschreibung |
---|---|
PROJECT_ID | Die ID Ihres Projekts in Google Cloud. |
JSON_PATH | Der Pfad zur JSON -Datei mit den Anfragedaten für den externen Server. |
Quelldarstellungsinstanz aktualisieren
Wenn Sie die Anfragedaten vom externen Server aktualisieren, können Sie die vorhandene Quelldarstellungsinstanz für die Verwendung der geänderten Werte aktualisieren.
Anfragedaten ändern
Aktualisieren Sie die Anfragedaten, um alle Felder einzubeziehen, die geändert wurden. Dazu gehören die Felder hostPort
, username
, password
, caCertificate
, clientCertificate
und clientKey
. Nachdem Sie die Anfragedaten aktualisiert haben, verwenden Sie sie in einem curl
-Befehl, um die Instanz in Cloud SQL zu aktualisieren.
Das folgende Beispiel zeigt, wie die Felder username
und password
mit einem anderen Nutzernamen und Passwort aktualisiert werden:
source.json
{ "name": "SOURCE_NAME", "region": "REGION", "databaseVersion": "DATABASE_VERSION", "onPremisesConfiguration": { "username": "NEW_USERNAME", "password": "NEW_PASSWORD" } }
Beispiel für verwalteten Import
// example of source.json for external server that
// - initiates replication from a Cloud SQL managed import
// - doesn't use SSL/TSL
{
"name": "cloudsql-source-instance",
"region": "us-central1",
"databaseVersion": "POSTGRES_9_6",
"onPremisesConfiguration": {
"username": "newReplicationUser",
"password": "525#@%*@"
}
}
Attribut | Beschreibung |
---|---|
SOURCE_NAME | Der Name der Quelldarstellungsinstanz. |
REGION | Die Region, in der sich die Quelldarstellungsinstanz befindet. |
DATABASE_VERSION | Die auf dem externen Server ausgeführte Datenbankversion. Die Optionen sind POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 oder POSTGRES_16 . |
NEW_USERNAME | Das neue Nutzerkonto für die Replikation auf dem externen Server. |
NEW_PASSWORD | Das Passwort für das neue Konto. |
Quelldarstellungsinstanz ändern
Erstellen Sie eine JSON-Datei, die Ihre geänderten Anfragedaten enthält, bevor Sie diesen Schritt ausführen.
Öffnen Sie dann ein Terminal und führen Sie die folgenden Befehle aus, um die Quelldarstellungsinstanz in Cloud SQL zu ändern:
curl
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X PATCH \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances/SOURCE_NAME
Beispiel
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data @./source.json \
-X PATCH \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/cloudsql-source-instance
Attribut | Beschreibung |
---|---|
PROJECT_ID | Die ID Ihres Projekts in Google Cloud. |
JSON_PATH | Der Pfad zur JSON -Datei mit den Anfragedaten für den externen Server. |
SOURCE_NAME | Der Name der Quelldarstellungsinstanz. |
Cloud SQL-Replikat einrichten
Das Cloud SQL-Replikat erhält schließlich die Daten vom externen Server. In diesem Schritt erstellen Sie die Anfragedaten und verwenden sie in einem curl
-Befehl, mit dem das Cloud SQL-Replikat in Cloud SQL erstellt wird.
Anfragedaten erstellen
Die Anfragedaten enthalten grundlegende Informationen zum externen Server und zum Cloud SQL-Replikat im JSON-Format. Die Anfragedaten für ein Cloud SQL-Replikat können in einem öffentlichen oder privaten Netzwerk konfiguriert werden und sollten folgende Informationen enthalten:
replica.json
{ "settings": { "tier": "TIER", "dataDiskSizeGb": "DISK_SIZE", "ipConfiguration": { "ipv4Enabled": "PUBLIC_IP_STATUS", "privateNetwork": "projects/PROJECT_ID/global/networks/NETWORK_NAME" }, "availabilityType": "AVAILABILITY_TYPE" }, "masterInstanceName": "SOURCE_REPRESENTATION_INSTANCE_NAME", "region": "SOURCE_REGION", "databaseVersion": "DATABASE_VERSION", "name": "REPLICA_NAME" }
Beispiel
{ "settings": { "tier": "db-custom-4-15360", "dataDiskSizeGb": "100" }, "masterInstanceName": "source-instance", "region": "us-central1", "databaseVersion": "POSTGRES_14", "name": "replica-instance" }
Attribut | Beschreibung |
---|---|
TIER | Der Maschinentyp zum Hosten der Replikatinstanz. Wenn Sie nicht wissen, welchen Maschinentyp Sie verwenden sollen, beginnen Sie mit db-custom-2-7680 . Bei Bedarf können Sie die Größe und andere Parameter ändern. |
DISK_SIZE | Die Speichergröße für das Cloud SQL-Replikat in GB. |
PUBLIC_IP_STATUS | Bestimmt, ob der Instanz eine öffentliche IP-Adresse zugewiesen wird. Standardmäßig ist der Wert dieses Attributs true .
Wenn Sie die Zuweisung einer öffentlichen IP-Adresse für das Replikat deaktivieren möchten, legen Sie den Wert auf false fest.
Wenn Ihr Projekt die
constraints/sql.restrictPublicIp Organisationsrichtlinie aktiviert ist, müssen Sie zum Erstellen des Cloud SQL-Replikats den Wert vonipv4Enabled Attribut auf false . Weitere Informationen zum Deaktivieren der Zuweisung öffentlicher IP-Adressen finden Sie unter Öffentliche IP-Adressen deaktivieren. |
PROJECT_ID | Wenn sich das Cloud SQL-Replikat in einem privaten Netzwerk befindet, fügen Sie das Attribut privateNetwork in die Datei replica.json ein.
Geben Sie als PROJECT_ID die ID Ihres Projekts in Google Cloud an. |
NETWORK_NAME | Der Name des privaten Netzwerks, das mit dem Cloud SQL-Replikat verwendet werden soll. |
AVAILABILITY_TYPE | Der Verfügbarkeitstyp des Cloud SQL-Replikats. Der Standardwert ist ZONAL . Legen Sie den Wert auf REGIONAL fest, um die Hochverfügbarkeitsreplikat (HA-Replikat) zu erstellen. Informationen zu den zulässigen Werten finden Sie unter SqlAvailabilityType.
Nachdem Sie ein externes Server-HA-Replikat erstellt haben, können Sie es nicht mehr in ein Nicht-HA-Replikat ändern. Dies gilt auch umgekehrt. Externe Nicht-HA-Replikate können nicht in Hochverfügbarkeitsreplikate geändert werden. Ein manuelles Failover kann zu einer nicht wiederherstellbaren Migration führen, wenn versucht wird, dass die Instanz noch die ursprünglichen Daten lädt, oder es kann zu temporären Ausfallzeiten führen, wenn die Instanz bereits aus der Quelle repliziert. Prüfen Sie den Replikationsstatus. |
SOURCE_REPRESENTATION_INSTANCE_NAME | Der Name der Quelldarstellungsinstanz. |
SOURCE_REGION | Die Region, die der Quelldarstellungsinstanz zugewiesen ist. |
DATABASE_VERSION | Die Datenbankversion, die mit dem Cloud SQL-Replikat verwendet werden soll. Die Optionen für diese Version sind POSTGRES_9_6 , POSTGRES_10 ,
POSTGRES_11 , POSTGRES_12 , POSTGRES_13 , POSTGRES_14 , POSTGRES_15 oder POSTGRES_16 .
Passen Sie die Datenbankversion an, die auf Ihrem externen Server ausgeführt wird, oder legen Sie den Wert auf maximal eine Version später fest. |
REPLICA_NAME | Der Name des zu erstellenden Cloud SQL-Replikats. |
Cloud SQL-Replikat erstellen
Erstellen Sie vor diesem Schritt eine JSON-Datei, die die Anfragedaten für das Replikat enthält. Öffnen Sie zum Erstellen eines Cloud SQL-Replikats ein Cloud Shell-Terminal und führen Sie die folgenden Befehle aus:
curl
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @JSON_PATH \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT-ID/instances
Beispiel
gcloud auth login ACCESS_TOKEN="$(gcloud auth print-access-token)" curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \ --header 'Content-Type: application/json' \ --data @./replica.json \ -X POST \ https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances
Attribut | Beschreibung |
---|---|
PROJECT_ID | Die ID Ihres Projekts in Google Cloud, die mit der ID der Quellinstanz übereinstimmen muss. |
JSON_PATH | Der Pfad zur JSON -Datei, die die Anfragedaten für das Cloud SQL-Replikat enthält. |
Einrichtung überprüfen
Rufen Sie die Seite Cloud SQL-Instanzen auf, um zu prüfen, ob die Instanzen korrekt eingerichtet wurden.
Die Quelldarstellungsinstanz und das Cloud SQL-Replikat sollten in etwa so aussehen:
Instanz-ID | Typ | Öffentliche IP-Adresse |
---|---|---|
(-) source-representation-instance | Externe Datenbank primär | 10.68.48.3:5432 |
Replikatinstanz | Lesereplikat der Datenbank | 34.66.48.59 |
Achten Sie außerdem darauf, dass Sie die Berechtigung cloudsql.instances.migrate
für das Cloud SQL-Replikat haben. Diese Berechtigung ist in den IAM-Rollen cloudsql.admin
oder cloudsql.editor
enthalten.
Nutzer dem Cloud SQL-Replikat hinzufügen
Datenbanknutzerkonten können nicht vom externen Server importiert werden. Sie können jedoch auf einem Cloud SQL-Replikat erstellt werden. Legen Sie diese an, bevor Sie ein Replikat vom externen Server erstellen.
Ausgehende IP-Adresse des Cloud SQL-Replikats abrufen
Sie können mit der ausgehenden IP-Adresse des Cloud SQL-Replikats eine sichere Verbindung zwischen dem externen Server und dem Cloud SQL-Replikat herstellen. Diese IP-Adresse wird Ihnen nicht in Rechnung gestellt.
Console
So rufen Sie die ausgehende IP-Adresse für das Replikat ab:
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
Bewegen Sie den Mauszeiger neben der öffentlichen IP-Adresse des Cloud SQL-Replikats auf die Kurzinfo Weitere Informationen und rufen Sie die ausgehende IP-Adresse ab.
Beachten Sie, dass die ausgehende IP-Adresse nicht die IP-Adresse ist, die in der Hauptliste für das Replikat in der Google Cloud Console angezeigt wird.
gcloud
Führen Sie den folgenden Befehl aus, um die ausgehende IP-Adresse für das Replikat abzurufen:
gcloud sql instances describe REPLICA_NAME --format="default(ipAddresses)"
Attribut | Beschreibung |
---|---|
REPLICA_NAME | Der Name des Cloud SQL-Replikats, dessen ausgehende öffentliche IP-Adresse Sie abrufen möchten. |
Eingehende Verbindungen auf dem externen Server zulassen
Das Cloud SQL-Replikat muss eine Verbindung zum externen Server herstellen, damit die Replikation möglich ist. Sie müssen die Netzwerkfirewall für Ihren externen Server so konfigurieren, dass Verbindungen von der ausgehenden IP-Adresse des Cloud SQL-Replikats zulässig sind, wenn die folgenden Bedingungen zutreffen:
- Der externe Server ist durch eine Firewall oder durch andere Netzwerkbeschränkungen geschützt.
- Ihr Cloud SQL-Replikat verwendet eine öffentliche IP-Adresse.
Um eine Verbindung zum Cloud SQL-Replikat herzustellen, verwenden Sie die primäre IP-Adresse des Replikats. Diese IP-Adresse wird in der Google Cloud Console angezeigt.
Quelldarstellungsinstanz für eine Replikation zum Cloud SQL-Replikat aktualisieren
Nach der Einrichtung der Quelldarstellungsinstanz für das Cloud SQL-Replikat müssen Sie möglicherweise die Quelldarstellungsinstanz aktualisieren. Beispielsweise müssen Ihre Konfigurationen in folgenden Fällen aktualisiert werden:
- Der Host, der Port oder die IP des externen Servers hat sich geändert.
- Sie möchten einen anderen Nutzer für die PostgreSQL-Replikation verwenden.
- Das Passwort des Nutzers für PostgreSQL-Replikate wurde geändert.
- Die SSL-Zertifikate, die für die sichere Verbindung zum externen Server verwendet wurden, wurden geändert.
Cloud SQL-Replikat übertragen
Verwenden Sie für das anfängliche Laden von Daten vom externen Server in das Cloud SQL-Replikat einen verwalteten Import. Sie verwendet einen Dienst, der Daten vom externen Server extrahiert und direkt in die Cloud SQL-Instanz importiert. Weitere Informationen finden Sie unter Replikation aus externen Datenbanken mithilfe eines verwalteten Imports einrichten.
Replikation überwachen
Wenn für das Cloud SQL-Replikat der anfängliche Datenladevorgang abgeschlossen ist, wird eine Verbindung zum externen Server hergestellt und es werden alle Aktualisierungen angewendet, die nach dem Exportvorgang vorgenommen wurden. Bestätigen Sie den Replikationsstatus.
Es ist wichtig, dass Sie den Replikationsstatus prüfen, bevor Sie das Replikat zu einer eigenständigen Instanz hochstufen. Wenn der Replikationsvorgang nicht erfolgreich abgeschlossen wurde, enthält ein hochgestuftes Replikat nicht alle Änderungen von Ihrem externen Server.
Wenn die Replikationsverzögerung nicht gegen 0 tendiert, nehmen Sie entsprechende Korrekturen vor.
Sie können diese Messwerte prüfen: /postgresql/external_sync/initial_sync_complete
, postgresql/external_sync/max_replica_byte_lag
und database/replication/state
. Liste der Cloud SQL-Messwerte aufrufen.
Stellen Sie eine Verbindung zur Datenbank her, sobald das Cloud SQL-Replikat den externen Server erreicht hat und es keine Replikationsverzögerung auf dem Cloud SQL-Replikat gibt. Führen Sie die entsprechenden Datenbankbefehle aus, um zu prüfen, ob die Inhalte im Vergleich zum externen Server wie erwartet sind. Behalten Sie Ihren externen Server bei, bis die erforderlichen Validierungen abgeschlossen sind.
Kaskadierendes Replikat einrichten
Nach der Migration können Sie kaskadierende Lesereplikate unter Ihrem Cloud SQL-Replikat erstellen, bevor Sie das Cloud SQL-Replikat hochstufen.
Erstellen Sie ein kaskadierendes Replikat, um folgende Befehle auszuführen:
Console
-
Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.
- Klicken Sie auf den Tab Replikate für das Replikat, das als übergeordnetes Element für das Replikat fungieren soll, das Sie erstellen möchten.
- Klicken Sie auf Replikat erstellen.
- Aktualisieren Sie auf der Seite Lesereplikat erstellen die Instanz-ID sowie alle anderen Konfigurationsoptionen, einschließlich Name, Region und Zone.
- Klicken Sie auf Erstellen.
Cloud SQL erstellt ein Replikat. Sie werden dann zur Instanzseite des übergeordneten Replikats zurückgeleitet.
- Führen Sie die Schritte 4 bis 6 für jedes neue kaskadierende Replikat aus, das Sie erstellen möchten.
gcloud
- Erstellen Sie das neue Replikat. Geben Sie dazu mit dem Flag
--master-instance-name
Ihr Cloud SQL-Replikat als primäre Instanz an:gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
Ersetzen Sie Folgendes:
- REPLICA_NAME ist die eindeutige ID des Replikats, das Sie erstellen
- PARENT_REPLICA_NAME ist der Name des Cloud SQL-Replikats
- Nachdem das Replikat erstellt wurde, können Sie sehen, dass die an der primären Instanz vorgenommenen Änderungen durch alle Replikate in der Kette der kaskadierenden Replikate repliziert werden.
curl
- Zum Erstellen eines Replikats unter dem übergeordneten Replikat bearbeiten Sie das folgende JSON-Codebeispiel und speichern es in einer Datei mit dem Namen
request.json
:{ "masterInstanceName": "EXTERNAL_SERVER_REPLICA_NAME", "project": "PROJECT_ID", "name": "REPLICA_NAME", "region": "REPLICA_REGION", "settings": { "tier": "MACHINE_TYPE", } }
- Führen Sie dazu diesen Befehl aus:
curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) -H "Content-Type: application/json; charset=utf-8" -d @request.json "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"
Replikat hochstufen
Stufen Sie das Replikat so hoch:
- Stufen Sie das Replikat zur primären Instanz hoch.
- Fügen Sie der Instanz Lesereplikate hinzu.
- Optional: Konfigurieren Sie eine Hochverfügbarkeit für Ihre Instanz.
Zur Vermeidung zusätzlicher Ausfallzeiten können Sie HA während der Einrichtung eines Replikats aktivieren, indem Sie
AVAILABILITY_TYPE
aufREGIONAL
setzen.