AlloyDB for PostgreSQL-Datenbank konfigurieren

In den folgenden Abschnitten wird beschrieben, wie Sie eine AlloyDB for PostgreSQL-Datenbank konfigurieren.

Verbindung zwischen Datastream und AlloyDB einrichten

Damit Datastream eine Verbindung zur AlloyDB-Instanz herstellen kann, müssen Sie im Nutzerprojekt einen TCP-Proxy einrichten. Das TCP-Proxy-Image ist für alle Nutzer öffentlich verfügbar.

  1. Starten Sie den Proxy-Container:

    1. Aktivieren Sie Cloud Shell im Nutzerprojekt.
    2. Führen Sie das folgende Skript aus, um den TCP-Proxy zu erstellen:
    gcloud compute instances create-with-container \
      --zone=REGION_ID VM_NAME \
      --container-image gcr.io/dms-images/tcp-proxy \
      --tags=dms-tcp-proxy \
      --container-env=SOURCE_CONFIG=ALLOYDB_IP:ALLOYDB_PORT \
      --can-ip-forward \
      --network=SOURCE_AND_DEST_VPC \
      --machine-type=VM_TIER
    

    Ersetzen Sie Folgendes:

    • REGION_ID: Die Region, in der Sie den TCP-Proxy erstellen möchten.
    • VM_NAME: Der Name der virtuellen Maschine.
    • ALLOYDB_IP: Die IP-Adresse der AlloyDB for PostgreSQL-Instanz.
    • ALLOYDB_PORT: Die Portnummer der AlloyDB for PostgreSQL-Instanz.
    • SOURCE_AND_DEST_VPC: Das VPC-Netzwerk, mit dem die Quelle und das Ziel verbunden sind.
    • VM_TIER: Der Typ Ihrer virtuellen Maschine.

    Ein Beispielbefehl mit aktualisierten Parametern:

    gcloud compute instances create-with-container \
      --zone=us-central1-c ds-tcp-proxy \
      --container-image gcr.io/dms-images/tcp-proxy \
      --tags=ds-tcp-proxy \
      --container-env=SOURCE_CONFIG=10.16.0.5:5432 \
      --can-ip-forward \
      --network=default \
      --machine-type=e2-micro
    
  2. Führen Sie das Script aus, um die IP-Adresse des TCP-Proxys mit den folgenden Eingaben auszugeben:

    gcloud compute instances describe VM_NAME \
      --format="yaml(networkInterfaces[].networkIP)" \
      --zone=REGION_ID
    

    Ersetzen Sie Folgendes:

    • VM_NAME: Der Name Ihrer virtuellen Maschine.
    • REGION_ID: Die Region, in der Sie den TCP-Proxy erstellt haben.
  3. (Optional) Erstellen Sie eine Firewallregel, um eingehenden Traffic an den TCP-Proxy zu beschränken:

    gcloud compute firewall-rules create FIREWALL_RULE_NAME \
      --direction=INGRESS \
      --priority=1000 \
      --target-tags=dms-tcp-proxy \
      --network=SOURCE_VPC \
      --action=ALLOW \
      --rules=tcp:ALLOYDB_PORT \
      --source-ranges=IP_RANGE
    

    Ersetzen Sie Folgendes:

    • FIREWALL_RULE_NAME: Der Name Ihrer Firewallregel.
    • SOURCE_VPC: Das VPC-Netzwerk, mit dem die Quelle verbunden ist.
    • ALLOYDB_PORT: Die Portnummer der AlloyDB for PostgreSQL-Instanz.
    • IP_RANGE: Der IP-Adressbereich, für den Sie eingehenden Traffic begrenzen möchten.

    Ein Beispielbefehl zum Zulassen von eingehendem Traffic von allen IP-Adressen:

    gcloud compute firewall-rules create ds-proxy1 \
      --direction=INGRESS \
      --priority=1000 \
      --target-tags=ds-tcp-proxy \
      --network=default \
      --action=ALLOW \
      --rules=tcp:5432
    

AlloyDB für Replikation konfigurieren

  1. Aktivieren Sie die logische Decodierung für die primäre AlloyDB-Instanz. Legen Sie in Google Cloud den Wert für das Flag alloydb.logical_decoding auf ON fest. Informationen zum Aktualisieren der Datenbank-Flags finden Sie unter Datenbank-Flags einer Instanz konfigurieren.

  2. Stellen Sie über die TCP-Proxy-IP-Adresse eine Verbindung zur AlloyDB-Instanz her. Führen Sie dazu den folgenden Befehl auf einer beliebigen VM in derselben VPC aus:

      psql -h PROXY_IP \
        -U DB_USER \
        -d DB_NAME
    

    Ersetzen Sie Folgendes:

    • PROXY_IP: Die IP-Adresse des TCP-Proxys.
    • DB_USER: Nutzername für die AlloyDB-Datenbank.
    • DB_NAME: Der Name der AlloyDB-Datenbank.
  3. Führen Sie den folgenden Befehl aus, um einem Datenbanknutzer Replikationsberechtigungen zu gewähren:

    ALTER USER DB_USER WITH REPLICATION;
    
  4. Erstellen Sie eine Publikation. Wir empfehlen, eine Publikation nur für die Tabellen zu erstellen, die Sie replizieren möchten. Dadurch kann Datastream die relevanten Daten nur lesen und die Datenbank und Datastream entlasten:

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLE SCHEMA1.TABLE1, SCHEMA2.TABLE2;

    Ersetzen Sie Folgendes:

    • PUBLICATION_NAME: Der Name Ihrer Publikation. Sie müssen diesen Namen angeben, wenn Sie einen Stream im Assistenten zum Erstellen von Datastream-Streams erstellen.
    • SCHEMA: Der Name des Schemas, das die Tabelle enthält.
    • TABLE: Der Name der Tabelle, die Sie replizieren möchten.

    Sie können eine Publikation für alle Tabellen in einem Schema erstellen. Mit diesem Ansatz können Sie Änderungen für Tabellen in der angegebenen Liste von Schemas replizieren, einschließlich Tabellen, die Sie zukünftig erstellen:

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLES IN SCHEMA1, SCHEMA2;

    Sie können auch eine Publikation für alle Tabellen in Ihrer Datenbank erstellen. Beachten Sie, dass bei diesem Ansatz die Belastung sowohl für die Quelldatenbank als auch für Datastream erhöht wird:

    CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES;
    
  5. Erstellen Sie mit dem folgenden Befehl einen Replikationsslot.

    SELECT PG_CREATE_LOGICAL_REPLICATION_SLOT('REPLICATION_SLOT_NAME', 'pgoutput');
    

    Ersetzen Sie Folgendes:

    • REPLICATION_SLOT_NAME: Der Name des Replikationsslots. Sie müssen diesen Namen angeben, wenn Sie einen Stream im Assistenten zum Erstellen von Datastream-Streams erstellen.

Datastream-Nutzer erstellen

  1. Geben Sie den folgenden PostgreSQL-Befehl ein, um einen Datastream-Nutzer zu erstellen:

    CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD';
    

    Ersetzen Sie Folgendes:

    • USER_NAME: Der Name des Datastream-Nutzers, den Sie erstellen möchten.
    • USER_PASSWORD: Das Anmeldepasswort für den Datastream-Nutzer, den Sie erstellen möchten.
  2. Gewähren Sie dem erstellten Nutzer die folgenden Berechtigungen:

    GRANT SELECT ON ALL TABLES IN SCHEMA SCHEMA_NAME TO USER_NAME;
    GRANT USAGE ON SCHEMA SCHEMA_NAME TO USER_NAME;
    ALTER DEFAULT PRIVILEGES IN SCHEMA SCHEMA_NAME GRANT SELECT ON TABLES TO USER_NAME;
    

    Ersetzen Sie Folgendes:

    • SCHEMA_NAME: Der Name des Schemas, für das Sie die Berechtigungen gewähren möchten.
    • USER_NAME: Der Nutzer, dem Sie die Berechtigungen gewähren möchten.