PostgreSQL의 Add Partition
수평으로 파티셔닝된 복제를 구성할 때 add partition 명령을 사용하여 파티션 scheme에 행 파티션을 추가할 수 있습니다. 생성할 각 행 파티션에 대해 add partition 명령을 실행합니다.
이 명령은 다음의 필수 구성 요소를 포함하여 파티션을 생성하는 데 필요한 모든 정보를 캡처합니다.
- 파티션 scheme 이름. 새 파티션 scheme을 생성하려면 해당 scheme에 대한 첫 번째 행 파티션을 생성하는 add partition 명령에 이름을 지정합니다. SharePlex는 파티션 scheme을 자동으로 생성합니다. 그런 다음, 해당 파티션 scheme에 행 파티션을 더 추가할 때 해당 이름을 지정합니다.
- 행 파티션에 지정된 행에 대한 라우팅
명령이 이미 복제 중인 테이블에 영향을 미치는 경우 구성 파일을 다시 활성화합니다. SharePlex는 구성 변경이 있는 테이블만 잠급니다.
수평으로 파티셔닝된 복제를 구성하는 방법에 대한 자세한 내용은 SharePlex 관리 안내서를 참조하십시오.
사용
지원되는 소스: |
PostgreSQL(온프레미스), Amazon RDS for PostgreSQL, Amazon Aurora for PostgreSQL, Azure Database for PostgreSQL Flexible Server, Google Cloud SQL for PostgreSQL |
지원되는 타겟: |
PostgreSQL, Oracle, SQL Server, Kafka, Amazon RDS for PostgreSQL, Amazon Aurora for PostgreSQL, Azure Database for PostgreSQL Flexible Server, Google Cloud SQL for PostgreSQL |
문제 위치: |
소스 시스템 |
관련 명령: |
Modify partition, Drop partition, Drop partition scheme, View Partitions |
구문
add partition toscheme_name
set
{condition = column_condition |
route = routing_map |
[and name =partition_name]
[and tablename =target_table]
[and description =description] |
구문 설명
to scheme_name |
to는 scheme_name에 행 파티션이 추가됨을 나타내는 필수 키워드입니다.
scheme_name은 파티션 scheme의 이름입니다. 파티션 scheme은 사용자가 실행하는 첫 번째 add partition 명령에 의해 생성되며, 파티셔닝할 첫 번째 행 집합도 지정합니다.
수평 파티셔닝을 많이 사용하는 경우 파티션 scheme에 대한 명명 규칙을 설정하는 것이 도움이 될 수 있습니다. |
set |
행 파티션 정의를 시작하는 필수 키워드입니다. |
condition = column_condition |
컬럼 조건에 따라 행 파티션을 생성합니다. 조건은 따옴표로 묶어야 합니다. ((region_id = West) and region_id is not null)과 같은 표준 WHERE 조건부 구문을 사용합니다. |
route = routing_map |
이 파티션의 경로입니다. 이는 다음 중 하나일 수 있습니다.
컬럼 조건에 따른 파티션:
표준 SharePlex 라우팅 맵을 지정합니다(예: sysB@r.dbname, sysB:q1@r.dbname 또는 sysB@r.testdb+sysC@r.testdb(복합 라우팅 맵)).
이름이 다른 여러 타겟 테이블로 파티션을 라우팅하려면 다음을 수행합니다.
- 각각의 다른 타겟 이름에 대해 별도의 add partition 명령을 실행합니다. 이름을 지정하려면 tablename 옵션을 사용합니다.
- 구성 파일에서 이러한 타겟 테이블 중 하나를 이 파티션 scheme을 사용하는 항목의 타겟 테이블로 지정합니다. SharePlex는 구성이 활성화되면 다른 이름을 감지합니다.
- SP_ORD_FIRST_FIND 매개변수를 0으로 설정하여 SharePlex가 파티션 scheme의 모든 컬럼 조건을 확인하도록 합니다. 기본적으로 SharePlex는 주어진 행 변경 사항이 파티션 scheme에서 하나의 컬럼 조건만 충족한다고 가정합니다.
|
name = name |
(권장) 이 파티션의 짧은 이름입니다. 이 옵션은 컬럼 조건을 기반으로 하는 파티션에만 유용합니다. 짧은 이름을 사용하면 나중에 파티션을 수정하거나 삭제해야 하는 경우 긴 컬럼 조건을 입력할 필요가 없습니다. |
tablename = owner.table |
(선택 사항) 타겟 테이블이 여러 개 있고 하나 이상의 이름이 다른 경우 이 옵션을 사용합니다. 각 이름에 대해 별도의 add partition 명령을 실행합니다.
테이블 이름은 정규화되어야 합니다. 대소문자를 구분하는 경우 이름을 따옴표로 묶어 지정해야 합니다.
예:
add partition to scheme1 set name = p1 and condition = "C1 > 200" and route = sysb:p1@r.dbname and tablename = myschema.mytable |
description = description |
(선택 사항) 이 파티션에 대한 설명입니다. |
예
컬럼 조건에 따른 행 파티션
여러 Post 큐를 통해 다양한 행 집합 라우팅:
sp_ctrl> add partition to scheme1 set name = q1 and condition = "C1 >= 200" and route = sysb:q1@r.dbname
sp_ctrl> add partition to scheme1 set name = q2 and condition = "C1 < 200" and route = sysb:q2@r.dbname
여러 행 집합을 소스의 다양한 타겟 시스템과 다양한 테이블 이름으로 라우팅합니다.
sp_ctrl> add partition to scheme1 set name = east and condition = "area = east" and route = sys1e@r.dbname and tablename = schema1.targ
sp_ctrl> add partition to scheme1 set name = west and condition = "area = west" and route = sys2w@r.dbname and tablename = schema2.targ
PostgreSQL의 Cancel 명령
cancel 명령을 사용하여 실행 중인 compare와 repair 명령 작업을 취소할 수 있습니다.
작업을 취소하려면 해당 작업 ID를 제공해야 합니다. 작업 ID는 작업을 시작하는 명령을 실행할 때 compare와 repair 작업에서 다시 보고됩니다.
sp_ctrl>repair using 1elliot
repairing 7 of 7 objects
repair started; job id 408
또는 job status 명령을 실행하여 가장 최근에 스트리밍된 작업의 작업 ID를 가져올 수 있습니다.
sp_ctrl>job status
Job ID: 408
PID: 11527
Host: prodsys
Started: 22-FEB-15 18:08:09
Job Type: Repair
Status: Processing - 0 objects completed
사용
지원되는 소스: |
PostgreSQL |
지원되는 타겟: |
PostgreSQL |
인증 수준: |
운영자(2) |
문제 위치: |
소스 시스템 |
관련 명령: |
compare, repair |
구문
cancel job_id |
[ on host |
on host:portnumber |
on login/password@host |
on login/password@host:portnumber ] |
구문 설명
jobID |
취소할 작업의 ID입니다.
예:
sp_ctrl>cancel 407 |
원격 옵션
이러한 옵션을 사용하면 원격 시스템에서 명령을 실행하고 로그인 이름, 비밀번호, 포트 번호 또는 이러한 항목의 조합을 포함하는 명령을 스크립트할 수 있습니다.
on host |
원격 시스템(현재 sp_ctrl 세션이 실행 중인 시스템이 아닌 것)에서 명령을 실행합니다. 원격 시스템에 대한 로그인 자격 증명을 묻는 메시지가 표시됩니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on SysA |
on host:portnumber |
원격 로그인 및 포트 번호를 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on SysA:8304 |
on login/password@host |
원격 로그인, 비밀번호 및 호스트 이름을 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예:sp_ctrl(sysB)>status on john/spot5489@SysA |
on login/password@host:portnumber |
원격 로그인, 비밀번호, 호스트 이름 및 포트 번호를 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on john/spot5489@SysA:8304 |
PostgreSQL의 Clear History 명령
clear history 명령을 사용하여 이전 compare와 repair 명령 작업에서 정보와 로그를 제거할 수 있습니다.
이러한 작업은 소스 및 타겟 시스템에 로그 파일을 생성합니다. 기본적으로 작업 정보와 로그 파일은 작업이 SP_SYS_JOB_HISTORY_RETENTION 매개변수로 설정된 값보다 오래되면 정리됩니다. Clear History 명령을 사용하여 특정 작업이나 테이블 또는 특정 기간의 모든 작업에 대한 요청 시 작업 정보와 로그를 삭제할 수 있습니다.
사용
지원되는 소스: |
PostgreSQL |
지원되는 타겟: |
PostgreSQL |
인증 수준: |
운영자(2) |
문제 위치: |
소스 시스템 |
관련 명령: |
compare, repair |
구문
clear history
{ all |
source_owner.source_table |
age days |
jobID } |
[for r.dbid] |
[ on host |
on host:portnumber |
on login/password@host |
on login/password@host:portnumber ] |
구문 설명
all |
모든 작업과 로그 내역이 제거됩니다.
예:
sp_ctrl(sysA)> clear history all |
source_owner.source_table |
특정 테이블에 대한 내역이 제거됩니다. SP_SYS_JOB_HISTORY_RETENTION 매개변수에 따라 내역이 삭제됩니다.
예:
sp_ctrl(sysA)> clear history clear history user2.employee |
age days |
지정된 일수보다 오래된 작업 내역이 제거됩니다.
예:
sp_ctrl(sysA)> clear history age 10 |
jobID |
지정된 작업 ID(작업 상태 명령을 사용하여 얻은)에 대한 작업이 제거됩니다. SP_SYS_JOB_HISTORY_RETENTION 매개변수에 따라 내역이 삭제됩니다.
예:
sp_ctrl(sysA)> clear history jobID |
for r.dbid |
선택 사항. 활성 구성이 없거나 둘 이상의 활성 구성이 있는 경우 Clear History 명령을 사용하는 데 사용할 수 있습니다. 두 경우 모두 for 옵션을 사용하여 소스 SID를 지정해야 합니다.
예:
sp_ctrl(sysA)>clear history all for r.dbid |
원격 옵션
이러한 옵션을 사용하면 원격 시스템에서 명령을 실행하고 로그인 이름, 비밀번호, 포트 번호 또는 이러한 항목의 조합을 포함하는 명령을 스크립트할 수 있습니다.
on host |
원격 시스템(현재 sp_ctrl 세션이 실행 중인 시스템이 아닌 것)에서 명령을 실행합니다. 원격 시스템에 대한 로그인 자격 증명을 묻는 메시지가 표시됩니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on SysA |
on host:portnumber |
원격 로그인 및 포트 번호를 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on SysA:8304 |
on login/password@host |
원격 로그인, 비밀번호 및 호스트 이름을 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예:sp_ctrl(sysB)>status on john/spot5489@SysA |
on login/password@host:portnumber |
원격 로그인, 비밀번호, 호스트 이름 및 포트 번호를 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on john/spot5489@SysA:8304 |
PostgreSQL의 Clear Status 명령
clear status 명령을 사용하여 상태 데이터베이스에서 오래된 경고 메시지를 제거할 수 있습니다.
이 명령을 사용하려면 다음을 수행합니다.
- show statusdb detail 명령을 실행하여 지울 수 있는 메시지를 확인할 수 있습니다. 지울 수 있는 메시지의 Clear 컬럼에는 Yes가 있습니다.
- 모든 메시지를 지우고 싶지 않다면 지우려는 각 메시지의 상태 ID를 기록해 둡니다.
- 각 상태 ID에 대해 clear status 명령을 실행하거나 all 인수를 사용하여 지울 수 있는 모든 메시지를 한 번에 제거합니다.
SharePlex는 지워진 메시지를 식별하는 메시지를 이벤트 로그에 넣습니다.
이 명령은 기본 시스템의 상태 데이터베이스에서 메시지를 지웁니다. 다른 시스템의 상태 데이터베이스에서 메시지를 지우려면 [onhost] 옵션을 사용합니다.
참고: 일부 메시지는 지울 수 없습니다.
사용
지원되는 소스: |
PostgreSQL |
지원되는 타겟: |
PostgreSQL |
인증 수준: |
운영자(2) |
실행 대상: |
소스 또는 타겟 시스템 |
관련 명령: |
show statusdb |
구문
clear status {statusID| all} |
[ on host |
on host:portnumber |
on login/password@host |
on login/password@host:portnumber ] |
구문 설명
statusID |
제거하려는 개별 메시지(show statusdb 명령을 사용하여 가져옴)의 SharePlex 할당 ID입니다.
예:
sp_ctrl(sysA)>clear status 20 |
all |
이 인수는 지울 수 있는 모든 메시지를 제거합니다.
예:
sp_ctrl(sysA)>clear status all |
원격 옵션
이러한 옵션을 사용하면 원격 시스템에서 명령을 실행하고 로그인 이름, 비밀번호, 포트 번호 또는 이러한 항목의 조합을 포함하는 명령을 스크립트할 수 있습니다.
on host |
원격 시스템(현재 sp_ctrl 세션이 실행 중인 시스템이 아닌 것)에서 명령을 실행합니다. 원격 시스템에 대한 로그인 자격 증명을 묻는 메시지가 표시됩니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on SysA |
on host:portnumber |
원격 로그인 및 포트 번호를 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on SysA:8304 |
on login/password@host |
원격 로그인, 비밀번호 및 호스트 이름을 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예:sp_ctrl(sysB)>status on john/spot5489@SysA |
on login/password@host:portnumber |
원격 로그인, 비밀번호, 호스트 이름 및 포트 번호를 제공해야 하는 경우 원격 시스템에서 명령을 실행합니다. 사용되는 경우 명령 구문의 마지막 구성 요소여야 합니다.
예: sp_ctrl(sysB)>status on john/spot5489@SysA:8304 |