database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Columns 8748 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 8748
PostgreSQL 9.0 리플리케이션 기능 사용기
작성자
김상기(ioseph)
작성일
2010-12-17 18:46ⓒ
2011-12-06 17:33ⓜ
조회수
11,684
이 문서는
http://brandonkonkle.com/blog/2010/oct/20/postgres-9-streaming-replication-and-django-balanc/
문서를 바탕으로 작성되었습니다.
원본글을 작성하신 분께 고마운 마음을 전합니다.
노트로 남겨둡니다.
아래 모든 일은 OS 사용자 권한으로는 PostgreSQL 서버 실행 권한 id (일반적으로 postgres) 여야할 것이며,
DB 사용자로는 DB 슈퍼유져여야한다 (일반적으로 postgres).
 

마스트 서버에서 할 일

postgresql.conf 파일에서 다음과 같게 각 항목들을 고친다.
wal_level = hot_standby
archive_mode = on
archive_command = 'cp -i %p /path/for/mount/%f'
여기서 /path/for/mount 경로는 initdb 명령으로 만들어진 PGDATA 경로 밖에 있어야한다. (물론 안에 있어도 되지만 슬레이브 서버 준비 할 때 귀찮다.
다음 pg_hba.conf 에서 리플리케이션 슬레이브 서버의 접속을 허용해야한다.
host   replication    all    192.168.0.25/32    trust
여기서 주의 할 점은 기존 database 칼럼이였던 두번째 칼럼 값이 반드시 replication 이어야한다.
마스트 서버 셋팅은 이것으로 끝.
모든 셋팅을 적용하기 위해서, 서버 재시작해야한다.
다음은 슬레이브 서버의 베이스 데이터베이스를 만들어야한다.
이때 주의할 점은 트랜잭션 "ID " 와 데이터베이스ID 를 일치하기 위해서 OS 차원의 DISK 백업을 해야한다.
이 백업하는 사이 발생하는 마스트 서버의 변경 내용은 앞에서 지정한 archive 로그 저장 기능을 이용해서 따로 보관해야한다.
작업 순서는
마스트 서버에 접속해서,
SELECT pg_start_backup('base_backup');
명령을 실행해서 실시간 백업을 진행한다.
다음,
마스트의 데이터베이스 클러스트 모두를 슬레이브 서버로 복사한다.  (OS 작업)
압축하고, 슬레이브로 보내고, 압축풀고, 뭐, 이런식으로 ....
(파일 소유주와, 접근권한 부분에 대해서는 언급을 생략함)
다음,
마스트 서버의 실시간 백업을 중지하고,
SELECT pg_stop_backup();

슬레이브 서버에서 할 일

파일을 복사하는 사이 만들어진 /path/for/mount/ 디렉토리 안에 있는 모든 파일을 슬레이브 서버 쪽 적당한 위치로 복사하고,
슬레이브의 postgresql.conf 파일에서 다음과 같게 각 항목들을 고친다.
hot_standby = on
다음 슬레이브의 데이터베이스 클리서트 디렉토리 안에, recovery.conf 파일을 다음과 같이 만든다.
standby_mode = 'on'
primary_conninfo = 'host=192.168.0.25 port=5432 user=postgres'
restore_command = 'cp /path/for/backups/%f %p'
trigger_file = '/path/for/backups/trigger_file'
archive_cleanup_command = 'pg_archivecleanup /path/for/backups %r'
다음 PostgreSQL 소스 디렉토리 안 contrib/pg_archivecleanup 디렉토리 안에서 make all && make install 명령으로 pg_archivecleanup 프로그램을 만들어서 실행가능한 디렉토리 안으로 옮겨둔다.
그리고, 슬레이브 서버를 시작하면,
먼저, archive log 읽어서 작업하는 사이 발생한 자료들을 동기화 할 것이며,
그것이 끝나면, 마스트 서버랑 연결해서, 마스트 서버의 트랜잭션 로그를 슬레이브 서버에도 적용한다.
테스트는 간단하다.
마스트 서버에서 작업한 것이 슬레이브에서도 그대로 반영 되었는지를 확인하면 된다.
테스트 작업을 해보면서, 이것을 실재 운영 중이 서비스에 어떻게 적용할 것인가?
여기에 머리가 아플 뿐이다.
[Top]
No.
제목
작성자
작성일
조회
9244archive_mode on 기반 부분 복구에 대한 전략 [1]
김상기
2013-02-22
8124
9223PostgreSQL checkpoint 로그 읽기
김상기
2013-01-25
9009
9022PostgreSQL 대량 세션 [1]
김상기
2012-08-29
8999
8748PostgreSQL 9.0 리플리케이션 기능 사용기
김상기
2010-12-17
11684
7053나름대로 쓰는 PostgreSQL 약사 [1]
김상기
2007-02-21
13963
5953비정상적인 시스템 종료에 따른 postmaster의 반응 (7.1 이상에서)
김상기
2005-03-08
14806
5472PostgreSQL8.0.0 beta1 리눅스 VS 윈도우 [7]
신기배
2004-08-14
15816
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.047초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다