Cloud SQL und externen Server für die Replikation konfigurieren

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

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud SQL Admin API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud SQL Admin API.

    Enable the API

  8. Sie benötigen für Ihr Nutzerkonto die Rollen „Cloud SQL-Administrator“, „Storage-Administrator“ und „Compute-Betrachter“.

    Zur IAM-Seite

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, 16 und 17
  • Amazon RDS 9.6.10 und höher, 10.5 und höher, 11.1 und höher, 12, 13, 14, 15, 16 und 17
  • 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, 16 und 17
  • Cloud SQL 9.6, 10, 11, 12, 13, 14, 15, 16 und 17

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:

  1. Rufen Sie in der Google Cloud Console die Seite VPC-Netzwerke auf.

    Zur VPC-Netzwerkseite

  2. Wählen Sie das VPC-Netzwerk aus, das Sie verwenden möchten.

  3. Klicken Sie auf den Tab Private Dienstverbindung.

Quellinstanz konfigurieren

So konfigurieren Sie Ihre Quellinstanz:

  1. Erstellen Sie Datenbank postgres, wenn die Quellinstanz sie nicht enthält.
  2. pglogical-Paket auf der Quellinstanz installieren
  3. 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 und cloudsql.enable_pglogical auf on, 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, dass pglogical eingeschlossen wird:

      ALTER SYSTEM SET shared_preload_libraries = 'pglogical';
            
    • Legen Sie wal_level mit dem folgenden Befehl auf logical fest:

          ALTER SYSTEM SET wal_level = 'logical';
          

      Setzen Sie den Parameter rds.logical_replication auf 1, um WAL-Logs auf der Ebene logical zu aktivieren, wenn die PostgreSQL-Quellinstanz Amazon RDS ist.

    • Legen Sie wal_sender_timeout mit dem folgenden Befehl auf 0 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 Wert 10 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 = #;
  4. 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.

  5. 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.
  6. Starten Sie die Quellinstanz neu, um die Konfigurationsänderungen zu übernehmen.

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:

    1. 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;
      $$;
      
    2. Erteilen Sie dem Nutzer die Berechtigung EXECUTE, indem Sie die folgenden Befehle ausführen:

      1. REVOKE EXECUTE ON FUNCTION pg_stat_replication_user() FROM public;
      2. 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 und template1
  • Für Amazon RDS-Quellen: template0, template1 und rdsadmin
  • Für Cloud SQL-Quellen: Vorlagendatenbanken template0 und template1

Führen Sie folgende Schritte für jede Datenbank in Ihrer Quellinstanz aus, die nicht in der obigen Liste enthalten ist:

  1. 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 Anweisungen UPDATE und DELETE manuell.

  2. 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, POSTGRES_16 oder POSTGRES_17.
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, POSTGRES_16 oder POSTGRES_17.
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_16",
        "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, POSTGRES_16 oder POSTGRES_17. 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:

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. 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

  1. Wechseln Sie in der Google Cloud Console zur Seite Cloud SQL-Instanzen.

    Cloud SQL-Instanzen aufrufen

  2. 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.
  3. Klicken Sie auf Replikat erstellen.
  4. Aktualisieren Sie auf der Seite Lesereplikat erstellen die Instanz-ID sowie alle anderen Konfigurationsoptionen, einschließlich Name, Region und Zone.
  5. Klicken Sie auf Erstellen.

    Cloud SQL erstellt ein Replikat. Sie werden dann zur Instanzseite des übergeordneten Replikats zurückgeleitet.

  6. Führen Sie die Schritte 4 bis 6 für jedes neue kaskadierende Replikat aus, das Sie erstellen möchten.

gcloud

  1. Erstellen Sie das neue Replikat. Geben Sie dazu mit dem Flag --master-instance-name Ihr Cloud SQL-Replikat als primäre Instanz an:
  2. 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
  3. 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

  1. 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",
        }
    }
  2. 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:

  1. Stufen Sie das Replikat zur primären Instanz hoch.
  2. Fügen Sie der Instanz Lesereplikate hinzu.
  3. 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 auf REGIONAL setzen.

Beschränkungen

  • Wenn Sie in Ihren externen Quelldatenbanken Erweiterungen installieren, die von Cloud SQL nicht unterstützt werden, werden diese Erweiterungen bei der Migration der Datenbanken zu einer Zielinstanz nicht migriert. Damit die Migration reibungslos abläuft, prüfen Sie, ob keine Objekte oder Anwendungen auf die Erweiterungen verweisen. Bevor Sie mit der Migration fortfahren, empfehlen wir Ihnen, die Erweiterungen zusammen mit allen Verweisen aus den Quelldatenbanken zu entfernen.

    Weitere Informationen zu den von Cloud SQL unterstützten Erweiterungen finden Sie unter PostgreSQL-Erweiterungen konfigurieren.

  • Wenn Sie die Erweiterung pg_cron in Ihren externen Quelldatenbanken installieren und die Datenbanken dann in eine Zielinstanz migrieren, werden die Erweiterung und alle mit der Erweiterung verknüpften cron-Einstellungen nicht von Cloud SQL migriert. Nachdem Sie die Datenbanken migriert und das Replikat hochgestuft haben, empfiehlt Google, die pg_cron-Erweiterung in jeder migrierten Datenbank wieder zu aktivieren.

Nächste Schritte