PostgreSQL 스트리밍 복제는 기본(마스터) 노드에서 대기(슬레이브) 노드로 WAL(Write-Ahead Log) 데이터를 지속적으로 스트리밍하여 고가용성과 내결함성을 위해 실시간에 가까운 데이터베이스 복사본을 생성합니다.
마스터 읽기/쓰기 WAL 슬레이브 1 슬레이브 2 읽기 전용 읽기 전용마스터 노드 구성
1. WAL 보관 활성화
postgresql.conf 수정 ?
archive_mode = on archive_command = 'cp %p /var/lib/pgsql/12/archive/%f' wal_level = replica max_wal_senders = 3
2. 복제 연결 허용
pg_hba.conf 수정 ?
# TYPE DATABASE USER ADDRESS METHOD host replication repluser 192.168.1.20/32 md5
3. 복제 사용자 생성
CREATE ROLE repluser WITH REPLICATION LOGIN PASSWORD 'securepass';
변경 후 마스터에서 PostgreSQL을 다시 시작하세요.
슬레이브 노드 구성
1. 마스터에서 기본 백업
sudo -u postgres pg_basebackup -h master_ip -D /var/lib/pgsql/12/data -U repluser -P -R
2. Recovery.conf 구성
/var/lib/pgsql/12/data/recovery.conf 만들기 ?
standby_mode = 'on' primary_conninfo = 'host=master_ip port=5432 user=repluser password=securepass' restore_command = 'cp /var/lib/pgsql/12/archive/%f "%p"'
3. 슬레이브 시작
sudo systemctl start postgresql-12 sudo systemctl enable postgresql-12
복제 확인
연결된 복제본을 확인하기 위해 마스터에서 실행하시겠습니까?
SELECT client_addr, state, sync_state FROM pg_stat_replication;
client_addr | state | sync_state ----------------+-----------+------------ 192.168.1.20 | streaming | async
수동 장애 조치
마스터가 실패하는 경우
- 실패한 마스터에서 복제 연결 끊기
- 슬레이브에서는
recovery_target_timeline = 'latest'을 설정합니다.recovery.conf에서 - 승격된 슬레이브에서 PostgreSQL 다시 시작
pg_stat_replication를 사용하여 다른 슬레이브가 새 마스터에 연결되는지 확인하세요.
결론
CentOS 8의 PostgreSQL 12 스트리밍 복제에는 마스터에서 WAL 보관 및 복제 액세스 구성, 슬레이브에서 기본 백업 및 Recovery.conf 생성, pg_stat_replication로 확인이 포함됩니다. . 수동 장애 조치는 필요할 때 슬레이브를 마스터로 승격시킵니다.