Membuat replika hanya baca

Untuk meningkatkan throughput dan ketersediaan baca, Anda dapat membuat server replika AlloyDB Omni untuk server AlloyDB Omni yang ada. Server replika menyediakan clone hanya baca dari server database utama Anda. Server ini terus memperbarui datanya sendiri untuk mencerminkan perubahan pada data server utama Anda.

Bagian berikut memberikan langkah-langkah untuk mengonfigurasi server utama AlloyDB Omni untuk replikasi, mengonfigurasi server replika, dan memverifikasi status replikasi di server utama.

Untuk mengetahui detailnya, lihat Menginstal AlloyDB Omni di Kubernetes.

Mengonfigurasi server utama untuk replikasi

  1. Perbarui setelan jaringan atau firewall host server utama Anda sehingga mengizinkan traffic masuk dari host server replika melalui port Postgres server utama.

  2. Buat pengguna replikasi:

    Docker

    docker exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"

    Ganti kode berikut:

    • REPLICA_USER: nama pengguna replika.
    • PASSWORD: sandi untuk pengguna replika.
    • CONTAINER_NAME: nama yang Anda tetapkan ke penampung AlloyDB Omni saat menginstalnya.

    Podman

    podman exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"

    Ganti kode berikut:

    • REPLICA_USER: nama pengguna replika.
    • PASSWORD: sandi untuk pengguna replika.
    • CONTAINER_NAME: nama yang Anda tetapkan ke penampung AlloyDB Omni saat menginstalnya.
  3. Tambahkan baris berikut di file /DATA_DIR/pg_hba.conf server utama sebelum host all all all scram-sha-256 yang ada dalam file:

    host alloydbmetadata    alloydbmetadata   IP_RANGE trust
    host replication        REPLICA_USER    IP_RANGE scram-sha-256
    

    Ganti kode berikut:

    • IP_RANGE: rentang IP, dalam notasi CIDR, dari subnet tempat mesin replika Anda berada. Contoh, 203.0.113.0/24.
    • DATA_DIR: jalur direktori data server utama.
  4. Mulai ulang server utama Anda:

    Docker

    docker restart CONTAINER_NAME

    Podman

    podman restart CONTAINER_NAME

Membuat dan mengonfigurasi server replika

Untuk membuat dan mengonfigurasi server replika AlloyDB Omni, selesaikan langkah-langkah berikut:

  1. Pastikan replika memiliki konektivitas jaringan ke server utama:

    ping SOURCE_IP

    Ganti SOURCE_IP dengan alamat IP instance AlloyDB Omni utama yang akan direplikasi.

  2. Pastikan replika dapat terhubung ke server utama:

    Docker

    docker run -it --rm google/alloydbomni psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"

    Podman

    podman run -it --rm google/alloydbomni psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"

    Output-nya akan terlihat seperti berikut:

           systemid       | timeline |  xlogpos  | dbname
     ---------------------+----------+-----------+--------
      7376500460465963036 |        1 | 0/454B670 |
      (1 row)
    
  3. Replika harus memiliki lokasi penyimpanan persisten di disk:

    Docker

     mkdir alloydb && docker run --rm -it \
       -e PGDATA=/var/lib/postgresql/data/pgdata \
       -v "$PWD/alloydb":/var/lib/postgresql/data \
       -p 5432:5432 \
       --user $(id -u):$(id -g) \
       google/alloydbomni \
       /usr/lib/postgresql/15/bin/pg_basebackup \
         --pgdata=/var/lib/postgresql/data/pgdata \
         --checkpoint=fast \
         --host="SOURCE_IP" \
         --port="SOURCE_PORT" \
         --username=REPLICA_USER \
         --create-slot \
         --write-recovery-conf \
         --slot="SLOT_NAME"

    Ganti kode berikut:

    • SOURCE_PORT: port TCP instance AlloyDB Omni utama yang akan direplikasi. Jika Anda tidak memberikan nilai ini, AlloyDB Omni akan menerapkan nilai default 5432.
    • SLOT_NAME: label untuk nama slot replikasi.

    Podman

     mkdir alloydb && podman run --rm -it \
       -e PGDATA=/var/lib/postgresql/data/pgdata \
       -v "$PWD/alloydb":/var/lib/postgresql/data \
       -p 5432:5432 \
       --user $(id -u):$(id -g) \
       google/alloydbomni \
       /usr/lib/postgresql/15/bin/pg_basebackup \
         --pgdata=/var/lib/postgresql/data/pgdata \
         --checkpoint=fast \
         --host="SOURCE_IP" \
         --port="SOURCE_PORT" \
         --username=REPLICA_USER \
         --create-slot \
         --write-recovery-conf \
         --slot="SLOT_NAME"

    Ganti kode berikut:

    • SOURCE_PORT: port TCP instance AlloyDB Omni utama yang akan direplikasi. Jika Anda tidak memberikan nilai ini, AlloyDB Omni akan menerapkan nilai default 5432.
    • SLOT_NAME: label untuk nama slot replikasi.
  4. Mulai instance replika Anda:

    Docker

    docker run --detach \
      --name pg-service \
      -e POSTGRES_PASSWORD=a \
      -e PGDATA=/var/lib/postgresql/data/pgdata \
      -v "$PWD/alloydb":/var/lib/postgresql/data \
      -v /dev/shm:/dev/shm \
      -p 5432:5432 \
      --user $(id -u):$(id -g) \
      google/alloydbomni

    Podman

    podman run --detach \
      --name pg-service \
      -e POSTGRES_PASSWORD=a \
      -e PGDATA=/var/lib/postgresql/data/pgdata \
      -v "$PWD/alloydb":/var/lib/postgresql/data \
      -v /dev/shm:/dev/shm \
      -p 5432:5432 \
      --user $(id -u):$(id -g) \
      google/alloydbomni

Memverifikasi status replikasi di server utama

Untuk memverifikasi bahwa replikasi dikonfigurasi dengan benar, jalankan perintah berikut di host server utama:

Docker

  docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "select * from pg_stat_replication"

Podman

  podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "select * from pg_stat_replication"

Tabel output berisi satu baris untuk setiap replika yang terhubung ke server database utama Anda.

Setelah Anda menyiapkan replikasi, semua penyisipan, pembaruan, dan penghapusan ke baris di server database utama Anda menjadi dapat dibaca di replika dalam hitungan detik.

Langkah selanjutnya