참조
1. http://sidharthdeshpande.blogspot.kr/2011/08/postgresql-904-streaming-replication.html
2. http://wiki.postgresql.org/wiki/Streaming_Replication
2번 참조가 공식 사이트의 사용방법이고, 1번 참조가 좀 더 자세하게 나온 것이다.
PostgreSQL은 9.1버전의 deb파일을 구해서 ubuntu 10.0.4에 설치하여 테스트했다.
- PostgreSQL 9.1 설치 : http://wiki.openscg.com/index.php/Postgres_9.1_DEB
- PostgreSQL 9.1 deb 및 rpm 파일 : http://www.openscg.com/se/postgresql/packages.jsp
설정은 master를 먼저 하고, slave를 실행한다.
ubuntu 기준으로 설치 시 /opt/postgresql/9.1/ 폴더에 설치가 되었다.
설정 중 경로가 없는것들이 몇 개 있는데 mkdir로 만들어 준다.
=== Master 설치 ===
1. PostgreSQL 9.1 설치 및 초기화
# dpkg -i postgresql...deb
# /etc/init.d/postgres-9.1-openscg start
2. 환경설정파일 수정
# cd /opt/postgres/9.1/data
- postgresql.conf파일과 pg_hba.conf파일을 수정해야 하는데, 수정하는 내용은 위의 참조 사이트를 참고한다.
3. DB 및 테이블 생성
- 실제 데이터가 들어갈 DB 및 테이블을 생성
- DB 생성은 createdb 를 사용하면 된다.
4. DB 데이터 백업
- 2번 참조 사이트의 How to Use섹션 5번, 6번 항목을 참고한다.
- rsync는 scp를 내부적으로 사용한다. 따라서 파라미터도 scp에 들어가는 것과 같다.
5. 4번까지 끝나면 slave의 /srv/pgsql/standby 폴더에 /opt/postgres/9.1/data의 파일들이 전부 복사되어 있다.
=== Slave 설치 ===
6. PostgreSQL 9.1 설치
# dpkg -i postgresql....db
- slave에서는 초기화를 하지 않는다.
7. DB 데이터 파일 복사
- 4번에서 복사한 /srv/pgsql/standby의 모든 파일을 /opt/postgres/9.1/data 폴더에 복사한다.
- 그 후 권한과 사용자를 변경한다.
# cd /opt/postgres/9.1/data
# chmod 700 .
# chown -R postgres:postgres .
8. 환경 설정파일 수정
- data폴더의 모든 파일을 복사 하였기 때문에 master와 똑같은 설정이 몇가지 있어서 수정한다.
- postgresql.conf 파일의 master설정 부분을 주석처리한다.
# vi postgresql.conf
max_wal_senders = 5 -> #max_wal_senders = 5
wal_keep_segments = 32 -> #wal_keep_segments = 32
- slave라는것을 알 수 있도록 hot_standby 항목의 값을 변경한다
#hot_standby = off -> hot_standby = on
# vi pg_hba.conf
- replication으로 설정된 항목 삭제
9. 환경설정 파일 추가
- 2번 참조 사이트의 How to Use섹션 9번을 참고한다.
10. 마무리
- 1번 참조 사이트에서 slave의 recovery.conf파일을 생성 한 후 하는 명령어를 실행한다.
- initdb 실행
- DB 시작
- 정상적으로 replication이 설정되었다면 1번 참조 사이트의 로그 내용이 출력된다. 로그는 pg_log 폴더에 있다.
11. 테스트
- master에서 DB에 아무 값이나 넣어본 후 slave에서 정상적으로 데이터가 복제되나 확인해본다.
※ 에러 사항
1. slave를 시작하는데 시작하는 시간이 오래 걸리고, 로그 내용중 "database system identifier differs between the primary and standby" 이란 에러가 있다면, slave에서 DB초기화를 해서 생긴 에러다.
==> data폴더를 삭제 후 다시 slave 설정을 하거나, 그래도 안되면 slave에서 PostgreSQL 9.1을 삭제한 후 다시 설치한다.
2. FATAL: data directory "/opt/postgres/9.1/data" has group or world access
DETAIL: Permissions should be u=rwx (0700).
==> 말 그대로 data폴더의 권한을 700 으로 주란 소리다.
'develop > linux' 카테고리의 다른 글
Raw 소켓 (0) | 2012.12.28 |
---|---|
find 명령어로 특정 시간내의 파일 찾기 (0) | 2012.11.16 |
PostgreSQL replication, Slony 사용 (2) replication 설정 (0) | 2012.08.20 |
PostgreSQL replication, Slony 사용 (1) 초기 설정 (0) | 2012.08.17 |
sqlite 동시 접근시 에러?? (0) | 2012.08.11 |