Mengonfigurasi AlloyDB untuk database PostgreSQL

Bagian berikut membahas cara mengonfigurasi AlloyDB untuk database PostgreSQL.

Menyiapkan konektivitas antara Datastream dan AlloyDB

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

  1. Luncurkan penampung proxy:

    1. Mengaktifkan Cloud Shell di project konsumen.
    2. Jalankan skrip berikut untuk membuat proxy TCP:
    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
    

    Ganti kode berikut:

    • REGION_ID: Region tempat Anda ingin membuat proxy TCP.
    • VM_NAME: Nama virtual machine.
    • ALLOYDB_IP: Alamat IP AlloyDB untuk instance PostgreSQL.
    • ALLOYDB_PORT: Nomor port AlloyDB untuk instance PostgreSQL.
    • SOURCE_AND_DEST_VPC: Jaringan VPC yang terhubung dengan sumber dan tujuan.
    • 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
    
  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.
    • SOURCE_VPC: Jaringan VPC yang terhubung dengan sumber Anda.
    • ALLOYDB_PORT: Nomor port AlloyDB untuk instance 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. Mengaktifkan decoding logis untuk instance utama AlloyDB. Di Google Cloud, tetapkan nilai untuk flag alloydb.logical_decoding ke ON. Untuk mengetahui informasi tentang cara 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. Membuat publikasi. Sebaiknya buat publikasi hanya untuk tabel yang ingin Anda replikasi. Hal ini memungkinkan Datastream untuk hanya membaca data yang relevan, dan menurunkan 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 direplikasi.

    Anda dapat membuat publikasi untuk semua tabel dalam skema. Pendekatan ini memungkinkan Anda mereplikasi perubahan untuk tabel dalam daftar skema yang ditentukan, termasuk tabel yang Anda buat pada masa mendatang:

    CREATE PUBLICATION PUBLICATION_NAME
    FOR TABLES IN SCHEMA1, SCHEMA2;

    Anda juga dapat membuat publikasi untuk semua tabel di database. Perhatikan bahwa pendekatan ini akan 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 aliran data di wizard pembuatan aliran data Datastream.

Membuat pengguna Datastream

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

    CREATE USER USER_NAME WITH REPLICATION LOGIN PASSWORD 'USER_PASSWORD';
    ALTER USER USER_NAME createdb;
    

    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 tempat Anda ingin memberikan hak istimewa.
    • USER_NAME: Pengguna yang ingin Anda beri hak istimewa.