일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 토익
- 시마지로
- 돈까스
- 사이타마
- 시스템관리
- 명령어
- one tab buy
- 리눅스
- paypay
- Shimajirou
- 점심
- 칸칸
- 라면
- youtuber
- 돼지갈비
- 영단어
- Sekai Entertainment
- 동경 모터쇼
- TOY
- 코라쿠엔
- 스테이크
- 米沢、팽이
- 여름
- 원탭바이
- 신쥬쿠
- 일본
- 자동차
- fish
- 전철
- しまじろう
- Today
- Total
IT Japan
PostgreSQL9의 Replication 본문
PostgreSQL9 복제 기능은 스트리밍 복제 및 상시 대기 기능을 결합한 제품이다.
http://www.interdb.jp/techinfo/pg_sr/sr02.html
http://www.interdb.jp/techinfo/pg_sr/sr01.html
본 문서에서는 마스터 1 대와 슬레이브 마스터 1 대 2 대 구성에서 복제 구성 예를 나타낸다. 또한,이 설정에 대한 검증은 프로덕션 환경으로는 의미가 없지만 Xen을 이용한 2 개의 가상 머신에서 테스트를 실시했다.
여기에서는 마스터 측의 컴퓨터의 IP 주소를 192.168.0.1 슬레이브 컴퓨터의 IP 주소를 192.168.0.2로 설명한다.
마스터 측
PostgreSQL9을 셋업
①우선은 소스로부터 컴파일한다.
wget ftp://ftp2.jp.postgresql.org/pub/postgresql/source/v9.0beta2/postgresql-9.0beta2.tar.gz
tar xvfz postgresql-9.0beta2.tar.gz
cd postgresql-9.0beta2
./configure
make
make install
②다음으로 유져(postgres)를 작성
useradd postgres
chown postgres.postgres -R /usr/local/pgsql
③환경변수의 설정
이하의 행을 /home/postgres/.bash_profile에 추가
export POSTGRES_HOME=/usr/local/pgsql
export PGLIB=$POSTGRES_HOME/lib
export PGDATA=$POSTGRES_HOME/data
export MANPATH=$MANPATH:$POSTGRES_HOME/man
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PGLIB
export PATH=$PATH:$POSTGRES_HOME/bin
환경변수를 반영한다.
su - postgres
source /home/postgres/.bash_profile
④아카이브용 디렉토리작성
mkdir -p /usr/local/pgsql/archives_master
chown postgres.postgres /usr/local/pgsql/archives_master
⑤데이터베이스 초기화
initdb -E UTF8
pg_ctl start
⑥마스터 측의 postgresql.conf 설정 다음 내용으로한다. (shared_buffers는 메모리 탑재량 등을 고려하여 적절한 값으로 설정)
# 버퍼의 크기를 정의
shared_buffers = 64M
# archive_modeはon
archive_mode = on
# hot_standby를 유효로 함
wal_level = hot_standby
# PITR용 디렉토리를 지정
archive_command = 'cp -i %p /usr/local/pgsql/archives_master/%f'
#Slave수 。이번회는 슬레이브가 1대이므로 '1'
max_wal_senders = 1
# 모든 IP로부터 주IP주소의 연결을 허용
listen_addresses = '*'
⑧마스터측의 pg_hba.conf 를 지정
이하의 2행을 추가 192.168.0.0는 자신의 네트워크에 맞춘다.
host replication postgres 127.0.0.1/32 trust
host replication postgres 192.168.0.0/24 trust
⑨버퍼의 개시
마스터에 접속해서, 다음 명령어를 실행한다.
psql
psql의 프롬프트(template1=#)가 표시되면, 이하의 한줄을 넣는다.
SELECT pg_start_backup('SR SNAPSHOT');
결과
pg_start_backup
-----------------
0/4000020
(1 row)
Slave측
여기까지 슬레이브 PostgreSQL 컴파일 (마스터 측의 순서 ① ~ ⑤까지와 마찬가지로)을 끝낸다.
다음에 마스터 데이터 영역을 슬레이브의 데이터 영역에 복사한다.
su - postgres
pg_ctl stop
cd /usr/local/pgsql
mv data bak.data
scp -r 192.168.0.1:/usr/local/pgsql/data ./
또한 슬레이브 아카이브 디렉토리를 생성한다.
mkdir -p /usr/local/pgsql/archives_slave
chown postgres.postgres /usr/local/pgsql/archives_slave
다시 마스터 측
백업 종료
데이터 영역의 복사가 완료되면 다음 명령을 실행한다.
psql
psqlのプロンプト(template1=#)
가 나오면 다음 문장을 투입한다.
SELECT pg_stop_backup();
결과
NOTICE: pg_stop_backup cleanup done, waiting for required WAL segments to be archived
pg_stop_backup
----------------
pg_stop_backup
----------------
0/40000D0
(1 row)
아카이브 영역을 복사한다.
scp -r /usr/local/pgsql/archives_master/* 192.168.0.2:/usr/local/pgsql/archives_slave
다시 슬레이브측
마스터 측의 postmaster.pid 파일이 남아 있으므로 삭제한다.
rm -f /usr/local/pgsql/data/postmaster.pid
スレーブ측의 postgresql.conf를 설정
# 버퍼의 크기를 정의
shared_buffers = 64M
# 이번회는 HotStandBy와 병용하므로
hot_standby = on
# archive 나 hot_standby。
이번에는 HotStandby와 병용하기 때문에 "hot_standby"
wal_level = hot_standby
# PITR용。적당한 디렉토리를 지정
archive_mode = on
archive_command = 'cp -i %p /usr/local/pgsql/archives_slave/%f'
슬레이브 recovery.conf 준비
PostgreSQL를 설치 한 디렉토리에 share라는 하위 디렉토리가 있고 거기에 샘플 파일 recovery.conf.sample이 있기 때문에 그것을 복사하여 편집한다.
cd /usr/local/pgsql/data
cp ../share/recovery.conf.sample recovery.conf
recovery.conf를 편집。
vi recovery.conf
편집내용
# 대기 모드는on
standby_mode = 'on'
# 마스터의 IP 주소와 포트를 지정
primary_conninfo = 'host=192.168.0.1 port=5432'
# 필수는 아니지만, Fail-over에 필요
trigger_file = '/tmp/trigger'
# PITR용
restore_command = 'cp -i /usr/local/pgsql/archives_slave/%f %p'
마스터 측의 PostgreSQL의 기동
su - postgres
pg_ctl stop
pg_ctl start
슬레이브 측의 PostgreSQL의 기동
su - postgres
pg_ctl start
この後、データベースの作成/テーブルの作成を行ったりして動作を確認する。
그후, 데이터베이스의 작성/ 테이블의 작성을 해서 동작을 확인한다.
'IT > PostgreSQL' 카테고리의 다른 글
Slave의 설정 및 reprication 동기화 (0) | 2016.05.30 |
---|---|
DB 작업 메모 (0) | 2016.05.30 |
pgpool-II 3.4의 신기능 (0) | 2016.04.10 |
PostgreSQL의 날짜 계산 (0) | 2016.03.21 |
PostgreSQL의 파라미터 튜닝 (0) | 2016.03.21 |