Mengonfigurasi database AlloyDB untuk PostgreSQL

Bagian berikut membahas cara mengonfigurasi database AlloyDB untuk PostgreSQL.

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 untuk umum bagi semua pelanggan.

  1. Luncurkan penampung 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 virtual machine.
    • ALLOYDB_IP: Alamat IP instance AlloyDB untuk PostgreSQL.
    • ALLOYDB_PORT: Nomor port instance AlloyDB untuk PostgreSQL.
    • SOURCE_AND_DEST_VPC: Jaringan VPC tempat sumber dan tujuan terhubung.
    • VM_TIER: Jenis virtual machine 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 Proxy TCP 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 masuknya.

    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 AKTIF. 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 hanya membaca 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 data Datastream.
    • SCHEMA: Nama skema yang berisi tabel.
    • TABLE: Nama tabel yang ingin Anda replikasi.

    Anda juga dapat membuat publikasi untuk semua tabel di database. 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 replika Anda. Anda harus memberikan nama ini saat membuat aliran di wizard pembuatan aliran 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 selanjutnya