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
Perbarui setelan jaringan atau firewall host server utama Anda sehingga mengizinkan traffic masuk dari host server replika melalui port Postgres server utama.
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.
Tambahkan baris berikut di file
/DATA_DIR/pg_hba.conf
server utama sebelumhost 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.
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:
Pastikan replika memiliki konektivitas jaringan ke server utama:
ping SOURCE_IP
Ganti
SOURCE_IP
dengan alamat IP instance AlloyDB Omni utama yang akan direplikasi.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)
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 default5432
.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 default5432
.SLOT_NAME
: label untuk nama slot replikasi.
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.