안녕하세요.
현재 사내 클라우드서버를 운영하고 있습니다.
CentOS 8에 PostgreSQL 10을 올려서 현재 운영중에 있습니다.
장애 발생시를 대비하여 Replication을 하고 있습니다.
여러 사이트에서 검색해서 설정을 아래와 같이 하기는 했는데 제대로 된건지는 잘모르겠습니다만 슬래이브에 pg_admin으로 접속해서 쿼리 해보면 동일하게 보이는것으로 보아 제대로 된듯 합니다.
문제는 슬래이브는 pg_archivecleanup을 설정하니 두개의 wal만 유지되어 좋습니다만
마스터는 어떻게 해야 할지 모르겠습니다. 마스터에 wal파일이 많이 생깁니다.
최근 한두개만 남기고 싶습니다. archive_mode = off으로 하면 해결되겠지만 슬래이브 장애시에 통으로 다시 보내야 해서 만들지 않을 수도 없습니다.
도와주세요~ ㅠ_ㅠ
## 현재 설정은 아래와 같습니다.
0. 설치
- 두대의 서버를 이중화 하기 위함입니다.
- 마스터서버IP : 10.23.1.101, 슬레이브서버IP : 10.23.1.102
- 서비스를 10.23.1.100번의 대표IP로 VIP설정
vi /etc/sysconfig/network-scripts/eth0:0 # 복사한뒤 vip를 설정해 줍니다.
DEVICE=eth0:0
TYPE=Ethernet
ONBOOT=yes
IPV6INIT=no
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=10.23.1.100
PREFIX=24
GATEWAY=10.23.1.254
- 두대의 서버에 ssh-keygen으로 서로의 퍼블릭키를 authorized_keys에 복사 해주었습니다.
1. CentOS8은 Base만 설치하고 firewalld에서 postgresql을 외부에서 접속할 수 있도록 포트를 열어 줍니다.
firewall-cmd --permanent --zone=public --add-port=5432/tcp
firewall-cmd --reload
2. PostgreSQL는 Yum으로 설치 합니다.
yum install postgresql-server postgresql-contrib
3. db사용자 계정과 db를 생성합니다.
createuser nextcloud -W
createdb nextcloud -O nextcloud -W
4. postgres 계정으로 데이터베이스를 초기화 합니다.
initdb
5. 마스터 pg_hba.conf
local all all peer
host all all 127.0.0.1/32 trust
host all all ::1/128 ident
host all all 0.0.0.0/0 password
host replication replication 10.23.1.101/32 trust
host replication replication 10.23.1.102/32 trust
6. 슬레이브 pg_hba.conf
hot_standby = on
7. 마스터 postgresql.conf
wal_level = hot_standby
max_wal_senders = 2
wal_keep_segments = 32
archive_mode = on
archive_command = 'cp %p /var/lib/pgsql/data/pg_wal/%f'
8. 슬레이브 recover.conf
restore_command = 'cp /var/lib/pgsql/data/pg_wal/%f %p'
archive_cleanup_command = 'pg_archivecleanup /var/lib/pgsql/data/pg_wal %r'
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=10.23.1.100 port=5432 user=replication password=비밀번호' |