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 und die Brücke zu deaktivieren Netzwerk, um Verbindungsprobleme zu vermeiden:
    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 \
      --metadata=startup-script='#! /bin/bash
      mkdir -p /etc/docker
      cat <<EOF > /etc/docker/daemon.json
      {"bridge":"none"}
      EOF
      systemctl restart docker'
    

    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, für das die Quelle und das Ziel verwendet werden. miteinander 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
      --metadata=startup-script='#! /bin/bash
      mkdir -p /etc/docker
      cat <<EOF > /etc/docker/daemon.json
      {"bridge":"none"}
      EOF
      systemctl restart docker'
    
  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 ist der Name Ihrer virtuellen Maschine.
    • REGION_ID: Die Region, in der Sie den TCP-Proxy erstellt haben.
  3. (Optional) Erstellen Sie eine Firewallregel, um den eingehenden Traffic zum 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, auf den Sie eingehenden Traffic beschränken möchten. Zugriffe.

    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 Folgendes fest: den Wert für das Flag alloydb.logical_decoding auf ON setzen. Informationen zu 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, indem Sie den folgenden Befehl von 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: Name der AlloyDB-Datenbank.
  3. Führen Sie den folgenden Befehl aus, um dem Datenbanknutzer Replikationsberechtigungen zu erteilen:

    ALTER USER DB_USER WITH REPLICATION;
    
  4. Erstellen Sie eine Publikation. Wir empfehlen, eine Publikation nur für die Tabellen, die Sie replizieren möchten. Dadurch kann Datastream schreibgeschützt relevanten Daten und senkt die Belastung von Datenbank und Datastream:

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

    Ersetzen Sie Folgendes:

    • PUBLICATION_NAME: Der Name Ihrer Publikation. Sie werden müssen Sie diesen Namen angeben, wenn Sie einen Stream im Datastream erstellen. Assistent zum Erstellen von Streams.
    • 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 Replizieren Sie Änderungen für Tabellen in der angegebenen Liste von Schemas, einschließlich Tabellen erstellen, 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 Dieser Ansatz erhöht die Belastung sowohl der Quelldatenbank als auch Datastream:

    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 Ihres Replikationsslots. Sie müssen diesen Namen angeben, wenn Sie einen Stream im Datastream erstellen Assistent zum Erstellen von Streams.

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 gewünschten Datastream-Nutzers. zu erstellen.
    • USER_PASSWORD: Anmeldepasswort für den Datastream-Nutzer die 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, dem Sie den Zugriff gewähren möchten die Berechtigungen.
    • USER_NAME: Der Nutzer, dem Sie die Berechtigungen erteilen möchten.