post gresql 전환 log,xlog 로그 의 실현

4522 단어 postgresqllogxlog
os: centos 7.4
db: postgresql 9.6
로그 전환:

select pg_rotate_logfile();
xlog 전환:

select pg_switch_xlog();
추가:postgresql 흐름 복사 마스터 전환+resetxlog
주 192.168.3.46
192.168.3.47 에서
현상:46 메 인 라 이브 러 리 의 xlog 로그 가 7T 이상 이 므 로 디스크 공간 이 부족 하여 pgresetxlog 명령 로그 삭제.
해결:
1.postgresql 매개 변수 수정

checkpoint_timeout = 60min   # range 30s-1d
max_wal_size = 4GB 
min_wal_size = 1GB 
checkpoint_completion_target = 0.9
wal_keep_segments = 50
2.pg_resetxlog 명령 로그 지우 기
작업 과정:
1.호스트 정지

#46
pg_ctl stop -D /data/postgresql/data
2.노드 에서 승급

#47
pg_ctl promote -D /data/postgresql/data
위의 두 단계 작업 이 끝 난 후 pgpool 에 연결 할 수 없 음 을 발 견 했 습 니 다.다음 과 같은 알림 이 있 습 니 다.

11370 Apr 10 21:04:00 usvr47 pgpool[21766]: [11-1] 2019-04-10 21:04:00: pid 21766: LOG: new connection received
11371 Apr 10 21:04:00 usvr47 pgpool[21766]: [11-2] 2019-04-10 21:04:00: pid 21766: DETAIL: connecting host=usvr47.cityre.cn port=26224
11372 Apr 10 21:04:00 usvr47 pgpool[21766]: [12-1] 2019-04-10 21:04:00: pid 21766: LOG: failed to connect to PostgreSQL server on "192.168.3.46:5432", getsockopt() detected error "Connection refused"
11373 Apr 10 21:04:00 usvr47 pgpool[21766]: [13-1] 2019-04-10 21:04:00: pid 21766: LOG: degenerate backend request for node_id: 0 from pid [21766] is canceled because failover is disallowed on the node
11374 Apr 10 21:04:00 usvr47 pgpool[21766]: [14-1] 2019-04-10 21:04:00: pid 21766: FATAL: failed to create a backend connection
11375 Apr 10 21:04:00 usvr47 pgpool[21766]: [14-2] 2019-04-10 21:04:00: pid 21766: DETAIL: executing failover on backend
세 번 째 줄 은 pgpool 의 건강 검진 helhcheck(프로필 에 정기 검사 가 설정 되 어 있 지 않 음)메 인 라 이브 러 리 에 연결 할 수 없 음 을 발견 합 니 다.
네 번 째 줄 은 pgool 이 고장 전 이 를 촉발 하여 라 이브 러 리 에서 주 라 이브 러 리 로 올 립 니 다(프로필 에 자동 고장 전 이 를 설정 하지 않 았 습 니 다.명령 pgctl premote 수 동 전환);
하지만 pgpool 에 백 엔 드 설정flag1 = ‘DISALLOW_TO_FAILOVER'는 고장 전 이 를 허용 하지 않 는 다 는 뜻 으로 psql-p 9999-h 192.168.3.45-U postgres 를 통 해 로그 인 할 수 없습니다.명령 을 백 엔 드 로 변경flag0 = ‘ALLOW_TO_FAILOVER'와 reload 후 로그 인 이 가능 합 니 다.
이 매개 변 수 는 pgpool 이 주 라 이브 러 리 에 연결 할 수 없 는 상황 에서 pgpool 도 로그 인 할 수 없 기 때문에 클 라 이언 트 가 라 이브 러 리 를 연결 할 수 없 는 현상 을 초래 합 니 다.
이때 show poolnodes 명령 은 메 인 라 이브 러 리(node id 0)의 상 태 를 다운 으로 볼 수 있 습 니 다.
3.원래 노드 xlog 지우 기

#46
#  oid xid
pg_controldata -D /data/postgresql/data
#   
pg_resetxlog -o 24579 -x 58288 -f /data/postgresql/data
7T 공간,청소 시간 은 약 30min 입 니 다.
4.데이터 다시 동기 화
46.47 의 slave 로 데 이 터 를 다시 동기 화 합 니 다.

pg_basebackup -D /data/postgresql/data -Fp -Xs -v -P -h 192.168.3.47 -p 5432 -U repl
기본 값 은 주 라 이브 러 리 checkpoint 를 기다 린 후 동기 화 됩 니 다.장시간 기다 리 지 않도록 주 제어 수 동 checkpoint 입 니 다.
동기 화 완료 후:

mv recovery.done recovery.conf
pg_ctl start /data/postgresql/data
이때 새로운 주종 은 바로 세 울 수 있다.
5.pgpool 보기

[postgres@usvr-3-46 ~]$ psql -p 9999 -h 192.168.3.45 -U postgres
Password for user postgres: 
psql (9.6.3)
Type "help" for help.
postgres=# show pool_nodes;
 node_id |  hostname  | port | status | lb_weight | role  | select_cnt | load_balance_node | replication_delay 
---------+--------------+------+--------+-----------+---------+------------+-------------------+-------------------
 0    | 192.168.3.46 | 5432 |down   | 0.500000 | standby | 66014   | false       | 72
 1    | 192.168.3.47 | 5432 | up   | 0.500000 | primary | 66559   | true       | 0
(2 rows)
이 때 3.46 이 pgpool 상태 에서 여전히 down 인 것 을 발 견 했 습 니 다.pcp 명령 을 통 해 실 효 된 노드 를 다시 클 러 스 터 에 가입 해 야 합 니 다.

pcp_attach_node -U postgres -h 192.168.3.45 -p 9898 -n 0
그 중 0 은 nodeid。
주의:
pcp 명령 의 암호 로 읽 은 파일 은 pcp.conf 입 니 다.비밀 번 호 를 잊 어 버 리 면 다음 작업 을 할 수 있 습 니 다.

[root@usvr47 ~]# pg_md5 postgres
e8a48653851e28c69d0506508fb27fc5
[root@usvr47 ~]# echo "postgres:e8a48653851e28c69d0506508fb27fc5" >> pcp.conf
명령 으로 pgmd5-m-u postgres-p 비밀번호 생 성,poolpasswd 파일 에서 이 파일 의 비밀 번 호 는 postgresql 을 연결 하 는 비밀번호 입 니 다.주의해 야 합 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기