database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 10124 게시물 읽기
No. 10124
PostgreSQL Replication failover 시간 관련
작성자
차영웅(ckduddnddl)
작성일
2020-01-07 11:59
조회수
2,721

 

 

현재 두 대의 서버가 이중화 되어있고 PostgreSQL 또한 리플리케이션이 맺어져있습니다.

스트리밍 복제를 통해 동기화 중이며, 정상적으로 동작하고 있습니다. 또한 현재 DB의 크기는 38G입니다.

장애가 나거나 절체를 하여, 슬레이브가 마스터로 승격되고 마스터가 슬레이브가 되어 새로운 마스터의 데이터를 복제를 합니다.(리플리케이션이 끊어져서)

이 때 리플리케이션을 다시 맺을 때, pg_rewind를 사용하는데, 걸리는 시간이 38G 기준으로 6분이 소요됩니다.  // pg_basebackup 사용 시 체크포인트를 찾는 시간이 추가로 소요

pg_rewind --target-pgdata = "targetdir" --source-server="sourceserver" 

모든 것이 정상적으로 이루어 지지만, 시간이 오래걸린다는 문제를 해결하기 위해 고민중입니다. 

 

절체 후 새로운 마스터의 데이터를 가져오는데 바뀐 부분만 가져오거나, 소요되는 시간을 줄일 수 있는 방법이 있다면 알려주시면 감사하겠습니다. 

-----------------------------------------------------------------------------------------------

I use Streaming Replication, and Replication works normally.

 

Two servers are HA and PostgreSQL DB is replicated. 

The data in the DB is about 40G.

When a failover occurs, the slave is successfully promoted to master, master becomes slave, and tries to replicate new master data.

But, It takes a long time to replicate data from the new master server.

(using pg_rewind / success / 38G - 6minutes).

 

**Please let me know if there are other ways to save time.**

------------------------------------------------------------------------------------------------

 

이 글에 대한 댓글이 총 3건 있습니다.

운영 노드 장애 시 대기 노드를 운영 노드로 바꿔서 쓰는 방식 가운데,  

사용하는 자료 저장 공간을 공유 디스크로 사용하는 방법이 있습니다. 

이렇게 하면, 그 저장공간이 하나 뿐이기 때문에 운영 전환이 되었을 때, 

대기서버의 복제 환경 구축을 재구축해야할 필요가 없어집니다. 

(물론 물리적인 스토리지 장애에 대해서는 백업 자료를 이용한 전체 복구를 해야하겠지만)

 

원하는 대답이 되지는 못했겠지만, 실 상용 환경 내, 제일 운영 비용이 싼 방법 같더군요. 

공유 디스크로 쓸 장비가 없다면, 단순하게 iscsi 로 구축해도 괜찮습니다. 

그리고 장애시 운영 전환은 OS 클러스터링 솔루션을 사용합니다. 

리눅스 환경 이라면, pacemaker 같은 솔루션이 제일 범용적이겠죠. 

 

 

김상기(ioseph)님이 2020-01-07 13:48에 작성한 댓글입니다.

정보 감사합니다. 

제가 자세히 몰라서 추가 질문드립니다.

공유 디스크를 사용하면 공유 디스크(서버 or 장비)에서 장애가 발생할 경우,

Active / Standby 서버 모두 DB가 다운되는 상황이 발생하지 않나요??

차영웅(ckduddnddl)님이 2020-01-07 14:41에 작성한 댓글입니다.

 네, 당연히 공유디스크를 관리하는 장비가 멈추면 DB가 멈추겠죠. 

하나를 얻고, 하나를 잃을 텐데, 뭘 얻고, 뭘 잃을 것인지는 각자의 몫이니까요. 

DB 서버가 운영 되고 있는 노드 장애 빈도와 그 DB 서버가 사용하는 스토리지 장애 빈도를 검토하시면 될 것 같습니다.  그리고, 각 이중화 방법으로 쓰는 운영 비용도 함께 고려하시면 됩니다. 

 

 

김상기(ioseph)님이 2020-01-07 15:19에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
10129서버시간을 잘못불러옵니다. [1]
이기자
2020-02-03
2366
10126PG 서버 시작 시 startup.log 에 서버 시작로그 따로 저장하는 방법없을까요? [2]
story1472
2020-01-08
2594
10125lock 및 slow query 확인 [1]
DB 생초보
2020-01-07
2606
10124PostgreSQL Replication failover 시간 관련 [3]
차영웅
2020-01-07
2721
10123utf-8 에러 해결 [1]
whangwls
2019-12-24
2677
10122잡답 - 과거에 postgresql 을 오픈DB로 사용하지 않았던 이유 [2]
lucky
2019-12-24
2964
10121csv파일 import 시 timestamp의 초단위가 00으로 나옵니다. [1]
rla01234
2019-12-19
2365
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.048초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다