다음 섹션에서는 복제를 위해 AlloyDB Omni 기본 서버를 구성하고, 복제본 서버를 구성하고, 기본 서버에서 복제 상태를 확인하는 단계를 설명합니다.
자세한 내용은 Kubernetes에 AlloyDB Omni 설치를 참고하세요.
복제를 위해 기본 서버 구성
기본 서버의 Postgres 포트를 통해 복제본 서버의 호스트에서 수신 트래픽을 허용하도록 기본 서버 호스트의 네트워크 또는 방화벽 설정을 업데이트합니다.
복제 사용자를 만듭니다.
Docker
docker exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"
다음을 바꿉니다.
REPLICA_USER
: 복제본 사용자의 이름입니다.PASSWORD
: 복제본 사용자의 비밀번호입니다.CONTAINER_NAME
: AlloyDB Omni를 설치할 때 할당한 이름입니다.
Podman
podman exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"
다음을 바꿉니다.
REPLICA_USER
: 복제본 사용자의 이름입니다.PASSWORD
: 복제본 사용자의 비밀번호입니다.CONTAINER_NAME
: AlloyDB Omni를 설치할 때 할당한 이름입니다.
파일에 있는
host all all all scram-sha-256
전 기본 서버의/DATA_DIR/pg_hba.conf
파일에 다음 줄을 추가합니다.host alloydbmetadata alloydbmetadata IP_RANGE trust host replication REPLICA_USER IP_RANGE scram-sha-256
다음을 바꿉니다.
IP_RANGE
: 복제본 머신이 있는 서브넷의 CIDR 표기법으로 표시된 IP 범위입니다. 예를 들면203.0.113.0/24
입니다.DATA_DIR
: 기본 서버의 데이터 디렉터리 경로입니다.
기본 서버를 다시 시작합니다.
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
복제본 서버 만들기 및 구성
AlloyDB Omni 복제본 서버를 만들고 구성하려면 다음 단계를 완료하세요.
복제본이 기본 서버에 네트워크로 연결되어 있는지 확인합니다.
ping SOURCE_IP
SOURCE_IP
를 복제할 기본 AlloyDB Omni 인스턴스의 IP 주소로 바꿉니다.복제본이 기본 서버에 연결할 수 있는지 확인합니다.
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;"
출력은 다음과 비슷하게 표시됩니다.
systemid | timeline | xlogpos | dbname ---------------------+----------+-----------+-------- 7376500460465963036 | 1 | 0/454B670 | (1 row)
복제본에는 디스크에 영구 스토리지 위치가 있어야 합니다.
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"
다음을 바꿉니다.
SOURCE_PORT
: 복제할 기본 AlloyDB Omni 인스턴스의 TCP 포트입니다. 이 값을 제공하지 않으면 AlloyDB Omni에서 기본값5432
을 적용합니다.SLOT_NAME
: 복제 슬롯 이름의 라벨입니다.
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"
다음을 바꿉니다.
SOURCE_PORT
: 복제할 기본 AlloyDB Omni 인스턴스의 TCP 포트입니다. 이 값을 제공하지 않으면 AlloyDB Omni에서 기본값5432
을 적용합니다.SLOT_NAME
: 복제 슬롯 이름의 라벨입니다.
복제본 인스턴스를 시작합니다.
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
기본 서버에서 복제 상태 확인
복제가 올바르게 구성되었는지 확인하려면 기본 서버의 호스트에서 다음 명령어를 실행합니다.
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"
출력 테이블에는 기본 데이터베이스 서버에 연결된 모든 복제본에 대한 행이 하나씩 포함됩니다.
복제를 설정하면 기본 데이터베이스 서버의 행에 대한 모든 삽입, 업데이트, 삭제가 몇 초 내에 복제본에서 읽을 수 있게 됩니다.