인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

tjrwn0716님의 프로필 이미지
tjrwn0716

작성한 질문수

개발자를 위한 쉬운 도커

PostgreSQL 이중화DB 구성

어떻게 Primary-Standby Replication으로 구성되는지

해결된 질문

작성

·

63

1

안녕하세요, 강의에서 구현해주신 Primary-Standby Replication 구조가 어떤 명령어를 통해 구성되는지 궁금해서 여쭤봅니다.

실습시에 복붙만 해서 정확히 어떤 명령어가 데이터를 복제해주고 동기화할 수 있는지, standby 쪽에서는 어떻게 읽기만 가능한지 궁금합니다.

REPMGR_PRIMARY_HOST 는 Primary로 세팅되고,

REPMGR_PARTNER_NODES 는 primary를 제외한 나머지 name:port는 standby로 세팅이 되는게 맞을까요?

 

추가로, primary-standby 방식에서 primary는 "반드시" 한개여야만 하나요 ? 여러개 일수도 있는지 궁금합니다

답변 2

0

데브위키님의 프로필 이미지
데브위키
지식공유자

tjrwn0716님 안녕하세요. 데브위키입니다.

해당 구성은 데이터베이스 구성에 관련된 부분이기 때문에 구성 과정을 명령어 수준으로 자세히 답변드리기는 어렵습니다. 데이터를 복제하고 동기화하는 작업은 PostgreSQL의 내장 복제 기능으로 자동으로 수행됩니다!

구조적으로 정리하자면 프라이머리 노드는 한 대만 구성하며, 스탠바이 노드는 여러 대의 읽기 노드로 구성되며 부하를 분산하는 역할을 수행합니다. 그리고 프라이머리 노드에 데이터 쓰기 작업이 발생하면, PostgreSQL의 내장 복제 기능에 따라 스탠바이 노드로 데이터를 복제합니다.

repmgr은 데이터베이스를 관리하는 소프트웨어이며 새로운 노드를 등록하거나 상태를 모니터링하는 등의 기능을 수행합니다.

 

강의 들으시면서 더 궁금하신 부분이 있으면 편하게 질문해주세요!

0

안녕하세요, 인프런 AI 인턴입니다. tjrwn0716님, 질문 주셔서 감사합니다.

Primary-Standby Replication 구조는 보통 데이터베이스 시스템에서 데이터의 가용성과 안정성을 높이기 위해 사용됩니다. 이 구조에서는 데이터베이스의 데이터를 주로 Primary 노드에서 관리하고, Standby 노드는 Primary 노드의 데이터를 복제하여 백업과 장애 복구를 지원하는 방식으로 운영됩니다.

특정 명령어 및 설정

  1. 데이터 복제 및 동기화: 복제를 위한 명령어는 보통 데이터베이스 기술에 따라 다릅니다. PostgreSQL의 경우, pg_basebackup과 같은 도구를 사용하거나 repmgr과 같은 유틸리티를 활용해서 관리합니다. 강의에서 사용된 특정 명령어는 강의 자료나 실습 파일에서 확인할 수 있습니다.

  2. Standby 노드 읽기 전용 설정: Standby 노드는 보통 읽기 전용(read-only) 모드로 설정됩니다. 이는 PostgreSQL의 경우, hot_standby=on 설정을 통해 가능합니다. 이 설정을 하면 Standby 노드가 Primary에서 받을 데이터를 읽기 전용으로 사용할 수 있습니다.

  3. 환경 변수 설정:

    • REPMGR_PRIMARY_HOST: Primary 노드로 지정됩니다. 이 변수는 Standby 노드가 어디로부터 데이터를 복제할지를 지정합니다.
    • REPMGR_PARTNER_NODES: Standby 노드들이 사용할 다른 노드의 정보를 지정합니다. 이때, 이 변수에 포함된 노드들은 자동화된 장애 복구 시나리오에서 사용할 수 있는 노드로 간주됩니다.

Primary-Standby 구조에서 Primary 노드의 수

  • 기본적으로 Primary-Standby 구조에서는 Primary가 “한 개”여야 합니다. Primary 노드는 데이터를 쓰고, Standby 노드는 이를 복제하여 읽기만 가능하다는 특징이 있기 때문입니다. 이를 통해 데이터의 일관성을 유지합니다. 여러 개의 Primary를 가지는 구조는 Multi-Primary 또는 Multi-Master 아키텍처라 하며, 이는 복잡성이 크게 증가하고 충돌 해결 등의 추가적인 관리가 필요합니다.

관련하여 깊이 있는 설명을 제공하고 있는 유사한 질문을 아래 링크에서 확인하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

tjrwn0716님의 프로필 이미지
tjrwn0716

작성한 질문수

질문하기