3 master 설정 #
.conf 파일이 있는 디렉토리로 이동
#locate pg_hba.conf
#/var/lib/pgsql/9.4/data/pg_hba.conf
cd /var/lib/pgsql/9.4/data/
pg_hba.conf파일에 replication 서버ip 등록
vi pg_hba.conf
host replication postgres 192.168.56.101/32 trust
host replication postgres 192.168.56.102/32 trust
host all all 192.168.56.1/32 trust
참고:
postgesql.conf 수정
vi postgresql.conf
listen_addresses = '*'
ssl = false
wal_level = hot_standby
max_wal_senders = 5
wal_keep_segement = 64
max_replication_slot = 1
슬롯 생성
su - postgres
psql -c "select * from pg_create_physical_replication_slot('my_rep_slot');"
exit
권한 변경
chown -R postgres.postgres /var/lib/pgsql
postgresql restart
su - postgres
cd /usr/pgsql-9.4/bin
./pg_ctl -D /var/lib/pgsql/9.4/data stop -m fast
./pg_ctl start -l /var/lib/pgsql/9.4/data/pg_log/postgres.log -D /var/lib/pgsql/9.4/data
or
systemctl restart postgresql-9.4
systemctl stop postgresql-9.4
4 slave 설정 #
.conf 파일이 있는 디렉토리로 이동
#locate pg_hba.conf
#/var/lib/pgsql/9.4/data/pg_hba.conf
cd /var/lib/pgsql/9.4/data/
pg_hba.conf파일에 replication 서버ip 등록
vi pg_hba.conf
host replication postgres 192.168.56.101/32 trust
host replication postgres 192.168.56.102/32 trust
host all all 192.168.56.1/32 trust
참고:
master 복사
cd /
systemctl stop postgresql-9.4
mv /var/lib/pgsql/9.4/data /var/lib/pgsql/9.4/data_old
su - postgres
pg_basebackup -h 192.168.56.101 -p 5432 -U postgres -D /var/lib/pgsql/9.4/data --xlog --checkpoint=fast --progress
ls /var/lib/pgsql/9.4/data
exit
postgesql.conf 수정
cd /var/lib/pgsql/9.4/data/
vi postgresql.conf
listen_addresses = '*"
ssl = false
wal_level = hot_standby
max_wal_senders = 5
wal_keep_segement = 64
max_replication_slot = 1
hot_standby = on
recovery.conf 생성
cd /var/lib/pgsql/9.4/data/
vi recovery.conf
primary_slot_name = 'my_rep_slot'
recovery_target_timeline = 'latest'
primary_conninfo = 'host=192.168.56.101 port=5432 user=postgres password=9999'
standby_mode = on
권한 변경
chown -R postgres.postgres /var/lib/pgsql
postgresql restart
su - postgres
cd /usr/pgsql-9.4/bin
./pg_ctl -D /var/lib/pgsql/9.4/data stop -m fast
./pg_ctl start -l /var/lib/pgsql/9.4/data/pg_log/postgres.log -D /var/lib/pgsql/9.4/data
or
systemctl restart postgresql-9.4
systemctl stop postgresql-9.4
6.1 192.168.56.102 서버 세팅 #
slave에서 쓰기 가능하도록 promote 한다. 이제 기존의 slave 서버는 master가 된다.
cd /usr/pgsql-9.4/bin
./pg_ctl promote
슬롯 생성
su - postgres
psql -c "select * from pg_create_physical_replication_slot('my_rep_slot');"
exit
192.168.56.103 서버를 pg_hba.conf에 추가한다.
cd /var/lib/pgsql/9.4/data/
vi pg_hba.conf
host replication postgres 192.168.56.101/32 trust
host replication postgres 192.168.56.102/32 trust
host replication postgres 192.168.56.103/32 trust
host all all 192.168.56.1/32 trust
postgresql.conf에서 hot_standby = on 주석처리
cd /var/lib/pgsql/9.4/data/
vi postgresql.conf
restart
systemctl restart postgresql-9.4
6.2 192.168.56.103 서버 세팅 #
앞서 slave에 설정한 것 처럼 설정한다. 단, IP는 기존의 slave서버(192.168.56.102)를 바라보게 한다.
cd /var/lib/pgsql/9.4/data/
vi pg_hba.conf
host replication postgres 192.168.56.101/32 trust
host replication postgres 192.168.56.102/32 trust
host replication postgres 192.168.56.103/32 trust
host all all 192.168.56.1/32 trust
master 복사(기존의 master 서버인 192.168.56.101는 죽은 상태이고, 192.168.56.102로 promote 된 상태이므로 192.168.56.102를 복사)
cd /
systemctl stop postgresql-9.4
mv /var/lib/pgsql/9.4/data /var/lib/pgsql/9.4/data_old
su - postgres
pg_basebackup -h 192.168.56.102 -p 5432 -U postgres -D /var/lib/pgsql/9.4/data --xlog --checkpoint=fast --progress
ls /var/lib/pgsql/9.4/data
exit
postgesql.conf 수정
cd /var/lib/pgsql/9.4/data/
vi postgresql.conf
listen_addresses = '*"
ssl = false
wal_level = hot_standby
max_wal_senders = 5
wal_keep_segement = 64
max_replication_slot = 1
hot_standby = on
recovery.conf 생성
cd /var/lib/pgsql/9.4/data/
vi recovery.conf
primary_slot_name = 'my_rep_slot'
recovery_target_timeline = 'latest'
primary_conninfo = 'host=192.168.56.102 port=5432 user=postgres password=9999'
standby_mode = on
권한 변경
chown -R postgres.postgres /var/lib/pgsql
재시작
systemctl restart postgresql-9.4