Computer >> 컴퓨터 >  >> 프로그래밍 >> SQL

단계별 가이드:CentOS 8에서 PostgreSQL 12 스트리밍 복제 설정

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로 확인이 포함됩니다. . 수동 장애 조치는 필요할 때 슬레이브를 마스터로 승격시킵니다.

단계별 가이드:CentOS 8에서 PostgreSQL 12 스트리밍 복제 설정