DB 샤드 그룹에서 샤드 분할
DB 샤드 그룹의 샤드를 두 개의 더 작은 샤드로 수동으로 분할할 수 있습니다. 이를 사용자 시작 샤드 분할이라고 합니다.
Aurora PostgreSQL Limitless Database는 데이터의 양이 매우 많거나 사용량이 매우 많을 때도 샤드를 분할할 수 있습니다. 이를 시스템 시작 샤드 분할이라고 합니다.
사전 조건
사용자 시작 샤드 분할에는 다음과 같은 사전 조건이 있습니다.
-
DB 샤드 그룹이 있어야 합니다.
-
DB 샤드 그룹은 비워둘 수 없습니다. 샤딩된 테이블을 하나 이상 포함해야 합니다.
-
사용자에게
rds_aurora_limitless_cluster_admin
권한이 있어야 합니다.rds_superuser
에는 이 권한이 있으므로 마스터 사용자에게도 권한이 있습니다.rds_superuser
는 다른 사용자에게 권한을 부여할 수 있습니다./* Logged in as the master user or a user with rds_superuser privileges */ CREATE USER
username
; GRANT rds_aurora_limitless_cluster_admin tousername
; -
분할하려는 샤드의 하위 클러스터(노드) ID를 알아야 합니다. 다음 쿼리를 사용하여 ID를 찾을 수 있습니다.
SELECT * FROM rds_aurora.limitless_subclusters; subcluster_id | subcluster_type ---------------+----------------- 1 | router 2 | router 3 | shard 4 | shard 5 | shard 6 | shard
시스템 시작 샤드 분할을 활성화하려면 DB 클러스터와 연결된 사용자 지정 DB 클러스터 파라미터 그룹에서 다음 DB 클러스터 파라미터를 설정합니다.
파라미터 | 값 |
---|---|
|
|
|
|
|
이 파라미터는 시스템 시작 샤드 분할을 마무리하는 방법을 결정합니다. 값은 다음 중 하나일 수 있습니다.
자세한 내용은 샤드 분할 마무리 단원을 참조하십시오. 참고이 파라미터는 시스템 시작 샤드 분할에만 적용됩니다. |
자세한 내용은 Amazon Aurora DB 클러스터의 DB 클러스터 파라미터 그룹 단원을 참조하십시오.
샤드 분할
DB 샤드 그룹에서 샤드를 분할하려면 rds_aurora.limitless_split_shard
함수를 사용합니다. 이 함수는 비동기식으로 실행되는 샤드 분할 작업을 시작합니다.
SELECT rds_aurora.limitless_split_shard('
subcluster_id
');
작업을 성공적으로 제출하면 작업 ID가 반환될 때까지 기다립니다. 예를 들면 다음과 같습니다.
SELECT rds_aurora.limitless_split_shard('3'); job_id --------------- 1691300000000 (1 row)
샤드 분할 추적
작업 ID를 사용하여 샤드 분할 작업을 추적할 수 있습니다. 특정 작업을 설명하고 이에 대한 세부 정보를 얻으려면 다음 쿼리를 실행합니다.
SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(
job_id
);
예시:
SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(1691300000000); job_id | action | job_details | status | submission_time | message ---------------+-------------+-----------------------+---------+------------------------+------------------------------------------- 1691300000000 | SPLIT_SHARD | Split Shard 3 by User | SUCCESS | 2023-08-06 05:33:20+00 | Scaling job succeeded. + | | | | | New shard instance with ID 7 was created. (1 row)
존재하지 않는 작업을 입력으로 전달하면 쿼리가 오류를 반환합니다.
SELECT * from rds_aurora.limitless_list_shard_scale_jobs(1691300000001); ERROR: no job found with the job ID provided
작업 ID 없이 동일한 쿼리를 사용하여 모든 샤드 분할 작업의 상태를 추적할 수 있습니다. 예를 들면 다음과 같습니다.
SELECT * FROM rds_aurora.limitless_list_shard_scale_jobs(); job_id | action | job_details | status | submission_time | message ---------------+-------------+-----------------------+-------------+------------------------+-------------------------------------------------------------- 1691200000000 | SPLIT_SHARD | Split Shard 3 by User | IN_PROGRESS | 2023-08-05 01:46:40+00 | 1691300000000 | SPLIT_SHARD | Split Shard 4 by User | SUCCESS | 2023-08-06 05:33:20+00 | Scaling job succeeded. + | | | | | New shard instance with ID 7 was created. 1691400000000 | SPLIT_SHARD | Split Shard 5 by User | FAILED | 2023-08-07 09:20:00+00 | Error occurred for the add shard job 1691400000000. | | | | | Retry the command. If the issue persists, contact AWS Support. 1691500000000 | SPLIT_SHARD | Split Shard 5 by User | CANCELED | 2023-08-07 09:20:00+00 | Scaling job was cancelled. (4 rows)
작업 상태는 다음 값 중 하나일 수 있습니다.
-
IN_PROGRESS
- 샤드 분할 작업이 제출되어 진행 중입니다. 한 번에 하나의 작업만 진행할 수 있습니다. -
PENDING
- 샤드 분할 작업을 사용자가 마무리하기를 기다리고 있습니다. 자세한 내용은 샤드 분할 마무리 단원을 참조하십시오. -
CANCELLATION_IN_PROGRESS
- 사용자가 샤드 분할 작업을 취소하는 중입니다. -
CANCELED
- 사용자 또는 시스템이 샤드 분할 작업을 성공적으로 취소했습니다. -
SUCCESS
- 샤드 분할 작업이 성공적으로 완료되었습니다.message
필드에는 새로운 샤드의 인스턴스 ID가 포함됩니다. -
FAILED
- 샤드 분할 작업이 실패했습니다.message
필드에는 실패에 대한 세부 정보와 실패한 작업에 대한 후속 조치로 수행할 수 있는 작업이 포함되어 있습니다.
샤드 분할 마무리
마무리는 샤드 분할 프로세스의 마지막 단계입니다. 이로 인해 어느 정도 가동 중지 시간이 발생합니다. 샤드 분할 작업을 시작하면 작업이 성공적으로 완료된 직후에 마무리가 이루어집니다.
rds_aurora.limitless_enable_auto_scale
파라미터를 사용하여 시스템 시작 샤드 분할을 활성화한 경우 시스템에서 워크로드를 기반으로 샤드를 분할하는 경우가 있습니다.
이 경우 마무리가 즉시 수행될지 아니면 사용자가 선택한 시간에 수행될지를 사용자가 선택할 수 있습니다. rds_aurora.limitless_finalize_split_shard_mode
DB 클러스터 파라미터를 사용하여 마무리 시기를 선택합니다.
-
값을
immediate
로 설정하면 즉시 마무리됩니다. -
값을
user_initiated
로 설정하면 사용자가 샤드 분할 작업을 수동으로 완료해야 합니다.RDS 이벤트가 사용자에게 전송되고 샤드 분할 작업의 상태가
PENDING
으로 설정됩니다.
user_initiated
로 설정하면 rds_aurora.limitless_finalize_split_shard
함수를 사용하여 샤드 분할 작업을 마무리합니다.
SELECT * FROM rds_aurora.limitless_finalize_split_shard(
job_id
);
참고
이 함수는 사용자가 아닌 시스템에서 시작한 샤드 분할에만 적용됩니다.
샤드 분할 취소
IN_PROGRESS
또는 PENDING
인 사용자 시작 또는 시스템 시작 샤드 분할을 취소할 수 있습니다. 취소하려면 작업 ID가 필요합니다.
SELECT * from rds_aurora.limitless_cancel_shard_scale_jobs(
job_id
);
오류가 없으면 출력이 반환되지 않습니다. 작업 추적 쿼리를 사용하여 취소를 추적할 수 있습니다.