Innovating today, leading tomorrow

OpenSQL_Technical Guide
[OpenSQL] pgpool-II(2)

[OpenSQL] pgpool-II(2)

Auto Fail-over란?

  • failover은 pgpool-II에서 액세스할 수 없는 PostgreSQL 백엔드 노드를 자동으로 분리하는 것입니다.

Auto Fail-over & VIP change Test

  • 기존 VIP가 node 0에 있는 상태에서 node 0 서버가 종료되면, VIP는 node 1 으로 전환됩니다.

node 0 에서 조회

$ psql -p 9999 -c ‘show pool_nodes;’ # 각 node 상태 확인
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance_node
———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | up | up | 0.500000 | primary | primary | 0 | true
1 | 192.168.200.142 | 5432 | up | up | 0.500000 | standby | standby | 0 | false
(2 rows)

$ ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.200.141 netmask 255.255.255.0 broadcast 192.168.200.255
ens33:0: flags=4163 mtu 1500
inet 192.168.200.200 netmask 255.255.255.0 broadcast 0.0.0.0
ether 00:0c:29:37:1a:2d txqueuelen 1000 (Ethernet)

node 0 서버 재부팅

(node0) reboot # reboot 시 서버,OS 종료 되어 node 0이 primary로 승격 하며 VIP를 가져옴

node 1에서 조회

$ psql -p 9999 -c ‘show pool_nodes;’ # 각 node 상태 확인
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance_node |
———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | down | down | 0.500000 | standby | unknown | 0 | false
1 | 192.168.200.142 | 5432 | up | up | 0.500000 | primary | primary | 0 | true

$ ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.200.142 netmask 255.255.255.0 broadcast 192.168.200.255

ens33:0: flags=4163 mtu 1500
inet 192.168.200.200 netmask 255.255.255.0 broadcast 0.0.0.0
ether 00:0c:29:e4:a1:13 txqueuelen 1000 (Ethernet)

Online Recovery란?

  • pgpool-II은 데이터베이스 노드를 동기화하고 서비스를 중지하지 않고 노드를 연결합니다.
  • pcp_recovery_node 명령어를 통해 실행할 수 있습니다.
  • pgpool_recovery extension을 반드시 설치해야 합니다.

Online Recovery Test

  • 노드를 조회하여 0번 노드가 down된 상태임을 확인합니다.

$ psql -p 9999 -c ‘show pool_nodes’;
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance_node |
———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | down | down | 0.500000 | standby | unknown | 0 | false
1 | 192.168.200.142 | 5432 | up | up | 0.500000 | primary | primary | 0 | true

  • pcp_recovery_node 커맨드를 이용해 0번 노드를 복구합니다.

$ pcp_recovery_node -n 0 -h /var/run/opensql –w
pcp_recovery_node — Command Successful

  • 노드를 조회하여 노드가 복구가 잘 되었는지 확인합니다.

$ psql -p 9999 -c ‘show pool_nodes’;
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance
———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | up | up | 0.500000 | standby | standby | 0 | true
1 | 192.168.200.142 | 5432 | up | up | 0.500000 | primary | primary | 0 | false
(2 rows)

Switch over란?


  • pcp_promote_node 명령어를 통해 pgpool-II은 지정된 노드를 새로운 Primary로 승격시킬 수 있습니다.

  • 현재 primary 노드를 down으로 변경하고, 그러면 failover_comman가 실행되어 지정된 노드가 새 primary 노드로 승격됩니다.

  • switch over를 실행 하려면 이전 primary노드가 standby노드로 전환되어야 하기 때문에 follow_primary_command가 반드시 올바르게 설정되어 있어야 합니다.

Switch over란?

  • 노드를 조회하여 현재 노드 상태를 확인합니다.

$ psql -p 9999 -c ‘show pool_nodes’;
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance
———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | up | up | 0.500000 | standby | standby | 0 | true
1 | 192.168.200.142 | 5432 | up | up | 0.500000 | primary | primary | 0 | false
(2 rows)

  • 0번 노드를 새로운 primary 노드로 지정하고 switch over를 진행합니다.

$ pcp_promote_node -n 0 -h /var/run/opensql -s -w
pcp_promote_node — Command Successful

  • 노드를 조회하여 1번 노드가 primary노드로 변경되었는지 확인합니다.

$ psql -p 9999 -c ‘show pool_nodes’;
node_id | hostname | port | status | pg_status | lb_weight | role | pg_role | select_cnt | load_balance_node | ———+—————–+——+——–+———–+———–+———+———+————+————
0 | 192.168.200.141 | 5432 | up | up | 0.500000 | primary | primary | 0 | true
1 | 192.168.200.142 | 5432 | down | up | 0.500000 | standby | standby | 0 | false

지금까지 PostgreSQL의 pgpool-II (2)에 관해 알아보았습니다

PostgreSQL을 쉽게 사용할 수 있도록 유용한 팁을 가지고 돌아오겠습니다.

광고성 정보 수신

개인정보 수집, 활용 목적 및 기간

(주)티맥스티베로의 개인정보 수집 및 이용 목적은 다음과 같습니다.
내용을 자세히 읽어보신 후 동의 여부를 결정해 주시기 바랍니다.

  • 수집 목적: 티맥스티베로 뉴스레터 발송 및 고객 관리
  • 수집 항목: 성함, 회사명, 회사 이메일, 연락처, 부서명, 직급, 산업, 담당업무, 관계사 여부, 방문 경로
  • 보유 및 이용 기간: 동의 철회 시까지

※ 위 개인정보 수집 및 이용에 대한 동의를 거부할 권리가 있습니다.
※ 필수 수집 항목에 대한 동의를 거부하는 경우 뉴스레터 구독이 제한될 수 있습니다.

개인정보의 처리 위탁 정보
  • 업체명: 스티비 주식회사
  • 위탁 업무 목적 및 범위: 광고가 포함된 뉴스레터 발송 및 수신자 관리
 

개인정보 수집 및 이용

개인정보 수집, 활용 목적 및 기간

(주)티맥스티베로의 개인정보 수집 및 이용 목적은 다음과 같습니다. 내용을 자세히 읽어보신 후 동의 여부를 결정해 주시기 바랍니다.

  • 수집 목적: 티맥스티베로 뉴스레터 발송 및 고객 관리
  • 수집 항목: 성함, 회사명, 회사 이메일, 연락처, 부서명, 직급, 산업, 담당업무, 관계사 여부, 방문 경로
  • 보유 및 이용 기간: 동의 철회 시까지

※ 위 개인정보 수집 및 이용에 대한 동의를 거부할 권리가 있습니다.
※ 필수 수집 항목에 대한 동의를 거부하는 경우 뉴스레터 구독이 제한될 수 있습니다.

개인정보의 처리 위탁 정보

  • 업체명: 스티비 주식회사
  • 위탁 업무 목적 및 범위: 광고가 포함된 뉴스레터 발송 및 수신자 관리
  •