읽기 전용 복제본
Databases for PostgreSQL 읽기 전용 복제본은 비동기 복제를 통해 리더 배포에서 복제본 배포로 모든 데이터를 복제합니다. 이름에서 알 수 있듯이 읽기 전용 복제본은 읽기 트랜잭션을 지원하며 쓰기 및 읽기가 많은 오퍼레이션이 있는 데이터베이스를 밸런싱하는 데 사용될 수 있습니다. 읽기 전용 복제본에는 단일 PostgreSQL 데이터 멤버가 있으며 리더와 동일한 멤버당 이용 요금으로 비용이 청구됩니다.
고가용성 읽기 전용 복제본
고가용성 Databases for PostgreSQL 읽기 전용 복제본은 읽기 확장성 향상, 가용성 증가, 읽기 지연 시간 단축, 백업 및 재해 복구 기능, 읽기 트래픽을 효율적으로 분산하는 기능 등의 이점을 제공합니다. 애플리케이션을 위한 보다 강력하고 반응성이 뛰어난 데이터베이스 인프라를 구축하는 데 기여합니다. 자세한 내용은 Databases for PostgreSQL 고가용성 읽기 전용 복제본 을 참조하세요.
리더
읽기 전용 복제본이 프로비저닝되기 전 Databases for PostgreSQL 배포의 읽기 전용 복제본 탭에서 중앙 창에 읽기 복제본이 존재하지 않는다고 표시되고 만들기 버튼이 제공됩니다.
배치가 리더이고 읽기 전용 복제본이 이미 리더에 연결된 경우, 복제 분할창에는 복제본 배치 목록과 각 배치에 대한 링크가 있습니다. 읽기 전용 복제본의 배포 이름 오른쪽에 있는 톱니바퀴 아이콘을 클릭하여 관리합니다.
읽기 전용 복제본 프로비저닝
PostgreSQL 배치를 위한 자원은 배치마다 할당되며, 일반 배치에는 2개의 멤버가 있습니다. 읽기 전용 복제본에는 멤버가 하나만 있고 프로비저닝은 현재 메모리 및 스토리지에 대해 요청된 값의 절반인 값을 사용하므로 프로비저닝이 실패할 수 있습니다. 웹 UI는 스토리지 값을 수정할 수 없으며 리더 배포의 값을 자동으로 사용하므로 절반으로 줄어듭니다. 데이터가 충분하지 않은 경우 API 또는 CLI를 사용하여 프로비저닝하려는 스토리지의 두 배를 지정해야 합니다. (메모리도 마찬가지이지만 메모리 양이 적으면 복원이 성공하지 못할 수도 있습니다.) 이러한 상황을 해결하기 위해 업데이트가 진행 중입니다.
UI를 통한 프로비저닝
리더의 읽기 복제본 탭에서 읽기 전용 복제본 만들기를 클릭하여 읽기 전용 복제본을 프로비저닝합니다. 소스 인스턴스가 자동으로 완료됩니다. 읽기 전용 복제본의 이름은 서비스 이름 필드에서 자동 생성되지만 자유롭게 이름을 바꿀 수 있습니다. 읽기 전용 복제본을 배치할 지역과 초기 메모리 할당을 선택할 수 있습니다. 디스크 크기, 버전, 공용 또는 사설 엔드포인트는 리더 배치의 설정과 일치하도록 자동으로 구성됩니다.
Key Protect를 사용하는 경우 CLI 및 API에서 프로비저닝할 때만 지원됩니다. 그렇지 않으면 읽기 전용 복제본이 생성된 키로 암호화됩니다.
CLI를 통한 프로비저닝
CLI 및 API를 통한 읽기 전용 복제본 프로비저닝은 표준 Databases for PostgreSQL 배치 프로비저닝과 유사하게 작동합니다. 프로비저닝은 리소스 컨트롤러에 의해 처리되며, {"remote_leader_id": "crn:v1:..."} 매개변수를 사용하여 프로비저닝할 복제본의 리더를 지정합니다.
CLI를 통해 읽기 전용 복제본을 프로비저닝하려면 다음과 같은 명령을 사용합니다:
ibmcloud resource service-instance-create <REPLICA_NAME_OR_CRN> databases-for-postgresql standard <REGION> \
-p \ '{
"remote_leader_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
"members_memory_allocation_mb": "2048",
"members_disk_allocation_mb": "10240"
}'
최소 크기는 RAM 8GB, 디스크 10GB라는 점을 염두에 두고 RAM과 디스크 용량을 모두 지정해야 합니다. 선택적으로 읽기 전용 복제본이 공용 또는 사설 엔드포인트를 사용하는지를 지정할 수 있습니다. 읽기 전용 복제본의 버전을 지정할 수는 없습니다. 버전은 리더 배치와 동일한 주 버전으로 자동 설정됩니다.
API를 통한 프로비저닝
API를 통해 읽기 전용 복제본을 프로비저닝하는 것은 표준 Databases for PostgreSQL 배포 와 유사하게 작동합니다. 프로비저닝은 리소스 컨트롤러에 의해 처리되며, {"remote_leader_id": "crn:v1:..."} 매개변수를 사용하여 프로비저닝할 복제본의 리더를 지정합니다.
API를 통해 읽기 전용 복제본을 프로비저닝하려면 다음과 같은 명령을 사용하세요:
curl -X POST \
https://resource-controller.cloud.ibm.com/v2/resource_instances \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{
"name": "<REPLICA_NAME_OR_CRN>",
"target": "<REGION>",
"resource_group": "<RESOURCE_GROUP_ID>",
"resource_plan_id": "databases-for-postgresql-standard",
"parameters": {
"remote_leader_id": "crn:v1:bluemix:public:databases-for-postgresql:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
"members_memory_allocation_mb": "2048",
"members_disk_allocation_mb": "10240"
}
}'
최소 크기는 RAM 8GB, 디스크 10GB라는 점을 염두에 두고 RAM과 디스크 용량을 모두 지정해야 합니다. 선택적으로 읽기 전용 복제본이 공용 또는 사설 엔드포인트를 사용하는지를 지정할 수 있습니다. 읽기 전용 복제본의 버전을 지정할 수는 없습니다. 버전은 리더 배치와 동일한 주 버전으로 자동 설정됩니다.
읽기 전용 복제본
읽기 전용 복제본의 복제본 읽기 탭에서 복제 에는 해당 복제본의 이름과 지역, 리더의 이름과 지역이 포함되어 있습니다. 또한 읽기 전용 복제본을 재동기화하고 승격하기 위한 단추가 있습니다.
복제 상태 확인
복제 상태는 자동으로 모니터링되지 않으므로 복제를 모니터링해야 합니다.
psql 으로 읽기 전용 복제본의 복제 상태를 확인하되, 리더에서만 확인할 수 있습니다. admin 인증 정보psql를 사용하여 을 통해 리더 배치에 연결하십시오.
연결되면 다음 명령을 실행합니다:
SELECT * from pg_stat_replication;
복제 지연에 대한 출력을 모니터링할 때 application_name 은 클라우드 리소스 이름(CRN)의 마지막에 채워진 섹션인 복제본의 포메이션 ID를 나타냅니다. "비동기" 값 sync_state, 복제 중 "스트리밍" 값 state 및 시간 통계를 확인하십시오.
배포에는 항상 HA 페어링된 노드에 대한 복제본이 있으며, application_name 은 기본 배포와 동일하고 sync_state 값은 "동기화"가 됩니다. 각 읽기 전용 복제본에 대해 추가 행의 출력이 예상되며, application_name 는 다르며 sync_state 은 "비동기"가 됩니다.
그런 다음 쿼리 결과에서 제공하는 추가 정보와 동기화되는지 여부를 평가할 수 있습니다.
자세한 내용은 pg_stat_replication을 참조하세요.
읽기 전용 복제본 사용자 및 권한
-
리더에 있는 모든 사용자는 읽기 전용 복제본 프로비저닝 전에 있었던 경우에도 리더에서 오브젝트에 대해 보유한 것과 동일한 권한으로 읽기 전용 복제본에 로그인하고 읽기를 실행할 수 있습니다.
-
리더에 첨부된 둘 이상의 읽기 전용 복제본이 있는 경우 리더에서 작성된 사용자가 다른 모든 읽기 전용 복제본에도 작성됩니다.
-
admin사용자를 포함하여 리더에서 작성된 사용자는 읽기 전용 복제본이 독립형 배치로 승격될 때 읽기 전용 복제본에서 유지됩니다. 읽기 전용 복제본이 승격될 때 리더에 있는 사용자 및 모든 사용자에 대한 권한이 승격된 배치로 전송됩니다. -
모든 사용자의 읽기 전용 복제본에 대한 쓰기 오퍼레이션은 필터링되거나 거부되지 않지만 데이터베이스 레벨에서 실패합니다.
읽기 전용 복제본에서 읽기 전용 복제본에 대한 액세스 권한이 있고 리더에 대한 액세스 권한이 없는 사용자를 작성할 수도 있습니다. 리더에 첨부된 둘 이상의 읽기 전용 복제본이 있는 경우 읽기 전용 복제본 중 하나에서 작성된 사용자가 다른 모든 읽기 전용 복제본에도 작성됩니다.
읽기 전용 복제본에서 작성된 읽기 전용 복제본 사용자는 복제본에 연결하고 읽기를 실행할 수 있습니다. 읽기 전용 복제본 사용자는 리더에서 연결하고 오페레이션을 실행할 수 없습니다. 또한 읽기 전용 복제본이 독립형 배치로 승격될 때 유지되지 않습니다.
읽기 전용 복제본에서 작성된 사용자에게는 리더가 권한을 지정하고 ibm-cloud-base-user-ro 역할이 지정됩니다. 이러한 사용자는 ibm-cloud-base-user 그룹의 구성원입니다. 또한 서비스 인증 정보, CLI 또는 API를 통해 작성된 리더의 모든 사용자를 포함하여 이 그룹의 다른 구성원이 작성한 모든 오브젝트에 액세스할 수 있습니다. ibm-cloud-base-user 의 권한에 따라 읽기 전용 복제본을 생성한 사용자는 관리자 사용자 또는 psql 을 통해 생성한 다른 사용자가 만든 개체에 액세스할 수 없습니다. 자세한 정보는 PostgreSQL 역할 및 권한 페이지를 참조하십시오.
읽기 전용 복제본 재동기화
읽기 전용 복제본을 재동기화해야 하는 경우 읽기 전용 재동기화 단추를 클릭하십시오. 재동기화는 작업을 중단하는 오퍼레이션이며 재동기화를 수행하면 읽기 전용 복제본의 데이터가 분해되고 다시 빌드됩니다. 읽기 전용 복제본은 재동기화가 실행되는 동안 다른 오퍼레이션을 수행하거나 조회를 실행할 수 없습니다. 조회가 리더로 다시 라우팅되지 않으므로 재동기화가 완료될 때까지 읽기 전용 복제본에 대한 모든 연결이 실패합니다.
읽기 전용 복제본을 다시 동기화하는 데 걸리는 시간은 다양하지만 프로세스가 오래 실행될 수 있습니다.
CLI를 통해 읽기 전용 복제본 다시 동기화하기
CLI를 통해 재동기화를 시작하려면 cdb read-replica-resync 명령을 사용하십시오.
ibmcloud cdb read-replica-resync <DEPLOYMENT_NAME_OR_CRN>
API를 통해 읽기 전용 복제본 다시 동기화하기
API를 통해 재동기화를 시작하려면 /deployments/{id}/remotes/resync 엔드포인트에 POST를 전송하십시오.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/resync \
-H 'Authorization: Bearer <>'
읽기 전용 복제본 승격
읽기 전용 복제본은 읽기 오퍼레이션 및 쓰기 오퍼레이션을 허용할 수 있는 독립 클러스터로 승격될 수 있습니다. 리더 배치에 문제가 발생하면 읽기 전용 복제본이 독립형 클러스터로 승격되고 애플리케이션의 쓰기를 허용하기 시작할 수 있습니다. 읽기 복제본 클러스터에 이미 두 개 이상의 데이터 구성원이 있는 경우 읽기 복제본 클러스터를 독립 실행형 클러스터로 승격하는 것이 더 빠릅니다.
승격 시 읽기 전용 복제본이 리더에 대한 연결을 종료하고 독립형 Databases for PostgreSQL 배치가 됩니다. 배치가 읽기 및 쓰기 오퍼레이션 허용 및 실행을 시작할 수 있으며 백업이 사용으로 설정되고 자체 admin 사용자로 발행됩니다. 새 데이터 멤버가 추가되어 배치가 두 개의 데이터 멤버를 포함하는 클러스터가 됩니다. 이렇게 하면 멤버당 동일한 이용 요금으로 청구되어 비용이 증가하지만 배치에는 하나가 아닌 두 개의 멤버가 있습니다.
읽기 전용 복제본을 승격할 때 일반적으로 승격 시 수행되는 초기 백업을 건너뛸 수 있습니다. 초기 백업을 건너뛰면 복제본이 보다 빠르게 사용 가능하게 되지만 즉시 사용 가능한 백업이 없습니다. 승격 프로세스가 완료된 후 On-Demand 백업을 시작할 수 있습니다.
읽기 전용 복제본이 독립 배치로 승격된 후에는 읽기 전용 복제본으로 되돌리거나 리더에 다시 참여하도록 할 수 없습니다.
UI에서 읽기 전용 복제본 승격하기
UI에서 읽기 전용 복제본을 승격하려면 읽기 전용 복제본 승격을 클릭합니다.
CLI에서 읽기 전용 복제본 승격하기
CLI를 통해 승격하려면 cdb read-replica-promote 명령을 사용하십시오.
ibmcloud cdb read-replica-promote <DEPLOYMENT_NAME_OR_CRN>
API를 통해 읽기 전용 복제본 승격하기
API를 통해 승격하려면 /deployments/{id}/remotes/promotion 엔드포인트에 POST를 전송하십시오.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{"promotion": {}}' \
승격 후 초기 백업을 승격하고 건너뛰려면 JSON 본문에서 skip_initial_backup을 설정하십시오.
curl -X POST \
https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
-H 'Authorization: Bearer <>' \
-H 'Content-Type: application/json' \
-d '{"promotion": {"skip_initial_backup": true}}' \
완료 시간
승격 태스크는 데이터베이스가 고가용성인 경우에만 완료됩니다. 그러나 읽기/쓰기 가용성은 한 가지 주요 제한사항(태스크 완료 시까지 데이터베이스가 고가용성이 아님)으로 약 10분 후에 발생합니다.
읽기 복제본의 전체 승격 시간은 다음과 같이 두 방식 중 하나를 사용하여 데이터 크기로 결정됩니다.
- 읽기 복제본은 단일 멤버입니다. 프롬프트되면 구성 스펙이 두 멤버로 변경되며 두 번째 복제본이 작성됩니다. 이 복제본의 작성 시간은 데이터 크기에 따라 다릅니다. 복제본 작성은 네트워크 포화 상태를 피하기 위해 25MB/s로 실행됩니다. 데이터베이스가 커지면서 작성 시간이 오래 걸릴 수 있습니다. 해당 복제본의 작성이 완료될 때까지는 태스크가 완료되지 않습니다.
- 승격의 일부로서 백업 수행을 선택한 경우, 해당 백업의 완료 역시 태스크의 완료 전에 완료해야 합니다. 이 경우도 완료 시간이 데이터베이스의 크기에 따라 다릅니다.
승격 작업이 완료될 때까지 고가용성 멤버가 없습니다. 마찬가지로, 초기 백업을 사용하도록 선택한 경우 두 번째 지점이 완료되거나 수동 백업이 작성될 때까지 백업이 존재하지 않습니다.
승격하는 동안 업그레이드
데이터베이스의 새 주 버전으로 업그레이드해야 하는 경우 읽기 전용 복제본을 독립형 배치로 승격하는 동안 이를 수행할 수 있습니다. 자세한 내용은 새 메이저 버전으로 업그레이드하기 를 참조하세요.
읽기 전용 복제본 고려사항
-
읽기 전용 복제본은 소스 정보와 동일한 지역이나 다른 지역에 있을 수 있으므로 지역 간에 데이터를 복제할 수 있습니다.
-
읽기 전용 복제본의 주 버전은 해당 리더와 동일해야 합니다.
-
읽기 전용 복제본에서는 백업이 사용 안함으로 설정됩니다. 리더 배치에서만 백업이 작성됩니다.
-
복제본은 서로만 복원 가능한 EU 클라우드 지원 지역(현재
eu-de,eu-es,par-01)을 제외한 다른 지역으로 복원할 수 있습니다(예:par-01복제본은eu-de로, 그 반대의 경우도 마찬가지). -
리더당 읽기 전용 복제본은 5개로 제한됩니다.
-
읽기 전용 복제본은 리더 클러스터에 대한 리더->팔로워 선택에 참여하지 않으며 읽기 전용 복제본에 대한 장애 복구는 자동화되지 않습니다. 읽기 전용 복제본을 전체 배치로 승격하는 것은 사용자가 시작하는 수동 태스크입니다.
-
읽기 전용 복제본의 최소 크기는 8GB RAM과 10GB 디스크입니다. 이는 리더 배치가 더 작은 경우에도 해당됩니다.
-
읽기 전용 복제본은 리더와 일치하도록 자동으로 스케일링되지 않습니다. 저장하는 데이터의 양이 배치에 할당된 디스크보다 커지면 읽기 전용 복제본의 디스크를 스케일링한 후 리더의 디스크를 스케일링하십시오. 읽기 전용 복제본을 먼저 스케일링하면 읽기 전용 복제본의 공간이 부족하지 않게 됩니다. 공간이 아니라 성능을 위해 리더의 디스크를 스케일링한 경우 읽기 전용 복제본을 스케일링할 필요가 없습니다.
-
복제는 비동기식이며 복제 지연이 발생할 수 있습니다. 기본적으로 기본값과 복제본 간에는 일관된 통신이 이루어지지 않습니다. 읽기 전용 복제본이 재동기화되어야 할 정도로 충분히 뒤떨어질 수 있습니다. 복제본이 리더로부터 지리적으로 멀리 떨어진 지역에 있는 경우 복제 지연 시간이 더 커질 수 있습니다.
-
IBM Cloud Monitoring 서비스로 배포를 모니터링하는 경우 PostgreSQL 읽기 복제본 복제 지연 메트릭에서 추세를 관찰할 수 있습니다. 이 메트릭에 문제가 있을 수 있는
-2값이 표시되면 복제 상태 확인의 단계를 완료하여 복제가 예상대로 작동하는지 확인합니다. 복제 상태를 확인한 후 문제가 있는 경우 다시 동기화하기 전에 IBM Cloud 지원팀에 문의하여 배포를 확인하세요. -
읽기 전용 복제본은 단일 데이터 구성원이 있는 배포이며 내부 고가용성이 없습니다. 유지보수 중에 일시적인 중단과 작동 중지가 발생하기 쉽습니다. 읽기 전용 복제본에 의존하는 애플리케이션이 있는 경우 실패한 조회를 재시도하는 논리 또는 여러 읽기 전용 복제본 간의 로드 밸런싱이 있어야 합니다.
인플레이스 메이저 버전 업그레이드 시 읽기 전용 복제본 상태
서비스에 Databases for PostgreSQL 인플레이스 메이저 버전 업그레이드가 도입됨에 따라, 읽기 전용 복제본은 읽기 트랜잭션의 연속성을 유지하는 데 도움이 되며 특히 업그레이드 과정에서 유용함을 입증할 수 있습니다. 다만, 현재 이 기능은 읽기 전용 복제본에는 아직 적용되지 않음을 유의하십시오. 그럼에도 불구하고, 업그레이드가 진행 중인 인스턴스에서 데이터를 읽어야 하는 서비스의 경우, 스탠바이 인스턴스를 생성하고 애플리케이션의 연결 정보를 스탠바이 인스턴스로 변경하는 것을 고려해 볼 수 있습니다. 이를 통해 업그레이드를 시작하기 전에 데이터베이스의 최신 사본을 확보할 수 있습니다. 인플레이스 업그레이드가 성공적으로 완료되지 않을 경우, 대기 인스턴스를 승격시켜 주 인스턴스로 사용할 수도 있습니다.
인플레이스 메이저 버전 업그레이드 중에는 소스 인스턴스와 그 읽기 전용 복제본이 복제 기능을 상실하며, 업그레이드 후 복제가 자동으로 복원 되지 않습니다(또한 버전 변경으로 인해 호환되지 않게 됨). 그러나 읽기 전용 복제본은 독립 실행형 인스턴스로서 완전히 작동합니다. 따라서, 업그레이드 결과와 무관하게 언제든지 읽기 전용 복제본을 주 인스턴스로 안전하게 승격시킬 수 있습니다. 업그레이드 실패 시 읽기 전용 복제본을 승격하면 데이터베이스를 신속하게 복원할 수 있습니다.