Mengonfigurasi database AlloyDB untuk PostgreSQL untuk CDC

Halaman ini menjelaskan cara mengonfigurasi change data capture (CDC) untuk mengalirkan data dari database AlloyDB for PostgreSQL ke tujuan yang didukung, seperti BigQuery atau Cloud Storage.

Menyiapkan konektivitas antara Datastream dan AlloyDB

Agar Datastream dapat terhubung ke instance AlloyDB, Anda perlu menyiapkan proxy TCP di project konsumen. Image proxy TCP tersedia secara publik untuk semua pelanggan.

  1. Luncurkan container proxy:

    1. Aktifkan Cloud Shell di project konsumen.
    2. Jalankan skrip berikut untuk membuat proxy TCP dan menonaktifkan jaringan bridge untuk menghindari masalah konektivitas:
    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'
    

    Ganti kode berikut:

    • REGION_ID: Region tempat Anda ingin membuat proxy TCP.
    • VM_NAME: Nama mesin virtual.
    • ALLOYDB_IP: Alamat IP instance AlloyDB untuk PostgreSQL.
    • ALLOYDB_PORT: Nomor port instance AlloyDB untuk PostgreSQL.
    • SOURCE_AND_DEST_VPC: Jaringan VPC yang menghubungkan sumber dan tujuan.
    • VM_TIER: Jenis mesin virtual Anda.

    Contoh perintah dengan parameter yang diperbarui:

    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. Jalankan skrip untuk mencetak alamat IP TCP Proxy dengan input berikut:

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

    Ganti kode berikut:

    • VM_NAME: Nama virtual machine Anda.
    • REGION_ID: Region tempat Anda membuat proxy TCP.
  3. (Opsional) Buat aturan firewall untuk membatasi traffic masuk ke proxy TCP:

    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
    

    Ganti kode berikut:

    • FIREWALL_RULE_NAME: Nama aturan firewall Anda.
    • SOURCE_VPC: Jaringan VPC tempat sumber Anda terhubung.
    • ALLOYDB_PORT: Nomor port instance AlloyDB untuk PostgreSQL.
    • IP_RANGE: Rentang alamat IP yang ingin Anda batasi traffic ingress-nya.

    Contoh perintah untuk mengizinkan traffic masuk dari semua alamat IP:

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

Mengonfigurasi AlloyDB untuk replikasi

  1. Aktifkan decoding logis untuk instance utama AlloyDB. Di Google Cloud, tetapkan nilai untuk flag alloydb.logical_decoding ke ON. Untuk mengetahui informasi tentang mengupdate flag database, lihat Mengonfigurasi flag database instance.

  2. Hubungkan ke instance AlloyDB menggunakan alamat IP proxy TCP dengan menjalankan perintah berikut dari VM mana pun di VPC yang sama:

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

    Ganti kode berikut:

    • PROXY_IP: Alamat IP proxy TCP.
    • DB_USER: Nama pengguna untuk database AlloyDB.
    • DB_NAME: Nama database AlloyDB.
  3. Jalankan perintah berikut untuk memberikan hak istimewa replikasi kepada pengguna database Anda:

    ALTER USER DB_USER WITH REPLICATION;
    
  4. Buat publikasi. Sebaiknya buat publikasi hanya untuk tabel yang ingin direplikasi. Hal ini memungkinkan Datastream membaca saja data yang relevan, dan mengurangi beban pada database dan Datastream:

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

    Ganti kode berikut:

    • PUBLICATION_NAME: Nama publikasi Anda. Anda harus memberikan nama ini saat membuat aliran data di wizard pembuatan aliran Datastream.
    • SCHEMA: Nama skema yang berisi tabel.
    • TABLE: Nama tabel yang ingin Anda replikasi.

    Anda juga dapat membuat publikasi untuk semua tabel di database Anda. Perhatikan bahwa pendekatan ini meningkatkan beban pada database sumber dan Datastream:

    CREATE PUBLICATION PUBLICATION_NAME FOR ALL TABLES;
    
  5. Buat slot replikasi dengan menjalankan perintah berikut.

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

    Ganti kode berikut:

    • REPLICATION_SLOT_NAME: Nama slot replikasi Anda. Anda harus memberikan nama ini saat membuat stream di wizard pembuatan stream Datastream.

Membuat pengguna Datastream

  1. Untuk membuat pengguna Datastream, masukkan perintah PostgreSQL berikut:

    CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD';
    

    Ganti kode berikut:

    • USER_NAME: Nama pengguna Datastream yang ingin Anda buat.
    • USER_PASSWORD: Sandi login untuk pengguna Datastream yang ingin Anda buat.
  2. Berikan hak istimewa berikut kepada pengguna yang Anda buat:

    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;
    

    Ganti kode berikut:

    • SCHEMA_NAME: Nama skema yang ingin Anda beri hak istimewa.
    • USER_NAME: Pengguna yang ingin Anda beri hak istimewa.

Langkah berikutnya