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 container AlloyDB Omni saat Anda 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 container AlloyDB Omni saat Anda menginstalnya.
Tambahkan baris berikut dalam 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
Buat dan konfigurasi 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 primer:
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 baris di server database utama Anda akan dapat dibaca di replika Anda dalam hitungan detik.