potgresql 에서 wal 로그 생 성 량 을 줄 이 는 작업

6279 단어 postgresqlwal 로그
1.바 쁜 시스템 에서 checkpoint 가 발생 하 는 빈 도 를 낮 추고 WAL 로그 의 생 성 량 을 줄 이 며 시스템 IO 에 대한 압력 을 줄 일 필요 가 있 으 면 다음 과 같은 두 가지 방법 을 사용 할 수 있 습 니 다.
1)WAL segment 크기 를 최대 64MB 까지 조정 할 수 있 지만,컴 파일 을 통 해서 만 조정 할 수 있다.기 존 시스템 에 불편 함;
2)증대 checkpointsegments 설정 으로 checkpoint 가 너무 자주 촉발 되 지 않도록 합 니 다.
2,9.5 에서 checkpointsegments 가 폐기 되 었 습 니 다.추가 매개 변수 max 를 통 해wal_size 로 조정 합 니 다.이 매개 변 수 는 1GB 로 9.4 의 2 배 입 니 다.하지만 9.4 에 checkpoint 를 수 동 으로 설정 했다 면segments,예 를 들 어 다음 과 같은 공식 은 9.5 로 max 를 설정 할 수 있 습 니 다.wal_사이즈 참고.

max_wal_size = (3 * checkpoint_segments) * 16MB
추가:PostgreSQL 은 완비 및 WAL 로 그 를 이용 하여 데이터 베 이 스 를 복원 합 니 다.
일반적인 상황 은 백업 시간의 복구 만 가능 합 니 다.완 비 된 작업 후의 데이터베이스 정 보 는 동기 화 되 지 않 습 니 다.이 때 는 wal 로 그 를 이용 하여 시간 적 인 복 구 를 해 야 합 니 다.
기초 백업―완비
pg 사용basebackup
pg_basebackup 은 postgresql 에서 제공 하 는 편리 한 기초 백업 도구(9.1 부터 제공)입 니 다.이 도 구 는 전체 데이터베이스 인 스 턴 스 의 데 이 터 를 복사 합 니 다.인 스 턴 스 의 부분(예 를 들 어 특정한 데이터베이스 나 표)을 따로 백업 하 는 것 이 아니 라 replication 프로 토 콜 을 사용 하여 데이터베이스 인 스 턴 스 에 연결 하기 때문에 메 인 데이터 베이스 의 pghba.conf 는 다음 과 같은 replication 연결 을 허용 해 야 합 니 다.

local replication postgre ident
9.2 이후 급 연속 복 제 를 지원 하기 때문에 다음 버 전에 서 pgbasebackup 도 다른 standby 라 이브 러 리 에서 기본 백업 을 할 수 있 습 니 다.다음 과 같은 몇 가지 측면 에 주의해 야 합 니 다.
1.백업 에 과거 기록 파일 을 백업 하지 않 았 습 니 다.
2.필요 한 모든 WAL 파일 이 백업 되 었 는 지 확인 하지 않 습 니 다.확보 하려 면 명령 행 인자'-x'를 추가 해 야 합 니 다.
3.백업 과정 에서 standby 가 주 라 이브 러 리 로 올 라 가면 백업 이 실패 합 니 다.
4、메 인 라 이브 러 리 에"full"을 열 어 달라 고 요청page_writes"인자,WAL 파일 은 pg 와 유사 할 수 없습니다.compresslog 도구 제거 fullpage_writes 정보.
매개 변수
-ft F 는 출력 형식 을 표시 하고 t 는 tar 패키지 의 격 시,p,기본 값,출력 은 디 렉 터 리 입 니 다.
-X fetch X 는 wal 로 그 를 수집 하 는 방식 으로 fetch 는 wal 로 그 를 수집 하고 stream 은 수집 하지 않 으 며,라 이브 러 리 streaming 을 준비 하 는 방식 으로 메 인 라 이브 러 리 를 쫓 습 니 다.none 은 일반적으로 사용 하지 않 습 니 다.
-h 데이터베이스 에 있 는 IP 백업
-p 데이터베이스 포트 번호
-P 백업 진행,100%표시
-v 백업 정 보 를 출력 합 니 다.위 pgbasebackup:등 유사 한 문구.
-W 비밀번호 입력 옵션
-D 백업 할 디 렉 터 리
다른 옵션,예 를 들 어-R 백업 라 이브 러 리 에 recover.conf 파일 저장
WAL 로그 백업
테스트 프로 세 스
데이터 파일 완비
한 대 는 실행 중인 주 라 이브 러 리 이 고,한 대 는 데이터 베 이 스 를 설 치 했 지만 초기 화 되 지 않 은 예비 복구 라 이브 러 리 입 니 다.
주 라 이브 러 리 의 데이터 파일 을 라 이브 러 리 의 데이터 디 렉 터 리 에 모두 준비 합 니 다.

주 라 이브 러 리 계속 조작
표 에 몇 줄 의 데 이 터 를 삽입 하고 시간 을 남 깁 니 다.

postgres=# insert into test08 values (6666666,'asdfg');
INSERT 0 1
postgres=# insert into test08 values (6666666,'asdfg');
INSERT 0 1
postgres=# insert into test08 values (6666666,'asdfg');
INSERT 0 1
postgres=# insert into test08 values (6666666,'asdfg');
INSERT 0 1
postgres=# insert into test08 values (6666666,'asdfg');
INSERT 0 1
postgres=# insert into test08 values (6666666,'asdfg');
INSERT 0 1

postgres=# select now();
 now 
-------------------------------
 2018-07-18 15:03:28.969495+08
(1 row)
postgres=# 
wal 로그 전환

postgres=# select pg_switch_wal();
 pg_switch_wal 
---------------
 5/EF0009D8
(1 row)
postgres=# 
\#\#\#\#wal 로 그 를 준비 라 이브 러 리 에 압축 합 니 다.
여 기 는 로 그 를 직접 라 이브 러 리/backup 디 렉 터 리 로 보 냅 니 다.

recovery.conf 파일 설정
pgdata 디 렉 터 리 에 파일 만 들 기

[postgres@mdw pgdata]$ cat recovery.conf 
recovery_target_time = ' 2018-07-18 11:00:18.526347+08 '
restore_command = 'cp /backup/pg_wal/%f %p'
시작 복구 실례

[postgres@mdw pgdata]$ pg_ctl start
waiting for server to start....2018-07-18 15:07:52.420 CST [3353] LOG: listening on IPv4 address "0.0.0.0", port 5432
2018-07-18 15:07:52.420 CST [3353] LOG: listening on IPv6 address "::", port 5432
2018-07-18 15:07:52.426 CST [3353] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
2018-07-18 15:07:52.468 CST [3354] LOG: database system was interrupted; last known up at 2018-07-18 15:00:09 CST
2018-07-18 15:07:52.950 CST [3354] LOG: starting point-in-time recovery to 2018-07-18 15:03:28.969495+08
2018-07-18 15:07:52.987 CST [3354] LOG: restored log file "0000000100000005000000F8" from archive
2018-07-18 15:07:53.247 CST [3354] LOG: redo starts at 5/F8000028
2018-07-18 15:07:53.308 CST [3354] LOG: consistent recovery state reached at 5/F8000B08
2018-07-18 15:07:53.308 CST [3353] LOG: database system is ready to accept read only connections
 done
server started
[postgres@mdw pgdata]$ 2018-07-18 15:07:53.343 CST [3354] LOG: restored log file "0000000100000005000000F9" from archive
2018-07-18 15:07:53.626 CST [3354] LOG: restored log file "0000000100000005000000FA" from archive
2018-07-18 15:07:54.192 CST [3354] LOG: invalid record length at 5/FA000140: wanted 24, got 0
2018-07-18 15:07:54.192 CST [3354] LOG: redo done at 5/FA000108
2018-07-18 15:07:54.192 CST [3354] LOG: last completed transaction was at log time 2018-07-18 15:03:20.200594+08
2018-07-18 15:07:54.397 CST [3354] LOG: restored log file "0000000100000005000000FA" from archive
cp: cannot stat `/backup/pg_wal/00000002.history': No such file or directory
2018-07-18 15:07:54.633 CST [3354] LOG: selected new timeline ID: 2
cp: cannot stat `/backup/pg_wal/00000001.history': No such file or directory
2018-07-18 15:07:55.160 CST [3354] LOG: archive recovery complete
2018-07-18 15:07:55.263 CST [3353] LOG: database system is ready to accept connections
복구 상황 보기
이후 작업 을 준비 창고 에서 복구 한 것 으로 밝 혀 졌 습 니 다.

postgres=# select * from test08 where id=6666666;
 id | n 
---------+-------
 6666666 | asdfg
 6666666 | asdfg
 6666666 | asdfg
 6666666 | asdfg
 6666666 | asdfg
 6666666 | asdfg
(6 rows)
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기