pg_partman 은 time 또는 serial id 기반 Table Partitioing 을 보다 쉽게 관리하는데 도움을 주는 Extension 입니다.
하위 테이블 생성은 모두 Extension 자체에서 관리합니다.
native 및 non-native 파티셔닝에 대해 더 이상 필요하지 않은 파티션을 자동으로 삭제할 수 있습니다.
백그라운드 워커(BGW) 프로세스가 포함되어 대부분의 경우 외부 스케줄러(cron 등) 없이 파티션 유지 관리를 자동으로 실행합니다.
Installation
요구사항 :
- PostgreSQL ≥ 10
pg_partman 을 다운로드한 디렉토리에서 아래와 같이 수행 합니다.
make install
백그라운드 워커 (BGW) 컴파일을 원하지 않고 일반 PL/PGSQL 함수만 원하는 경우 대신 다음을 실행할 수 있습니다.
make NO_BGW=1 install
postgresql.conf 파일의 shared_preload_libraries 파라미터에 라이브러리를 추가하여 데이터베이스 시작 시 백그라운드 워커를 로드해야 합니다.
shared_preload_libraries = ‘pg_partman_bgw’ # (change requires restart)
postgresql.conf에서 BGW에 대한 다른 제어 변수를 설정할 수도 있습니다. ”dbname” 은 지정된 데이터베이스에서 유지 관리를 실행하기 위해 필요합니다. 간단한 새로 고침으로 언제든지 추가/변경할 수 있습니다.
ex)
pg_partman_bgw.interval = 3600
pg_partman_bgw.role = ‘keith’
pg_partman_bgw.dbname = ‘keith’
PostgreSQL에 로그인하고 다음 명령을 실행합니다. CREATE EXTENSION 시 스키마 설정은 선택 사항이며 원하는 대로 지정할 수 있지만 설치 후에는 변경할 수 없습니다.
BGW를 사용하는 경우 구성된 데이터베이스에서 Extension 을 만들지 않고도 데이터베이스 클러스터를 안전하게 시작할 수 있습니다. 언제든지 Extension 을 생성할 수 있으며 BGW는 클러스터를 다시 시작하지 않고(shared_preload_libraries가 설정된 경우) Extension 이 존재하는지 자동으로 선택하고 구성된 대로 유지 관리 실행을 시작합니다.
CREATE SCHEMA partman;
CREATE EXTENSION pg_partman SCHEMA partman;
pg_partman을 설치하려면 여전히 수퍼유저가 필요합니다.
pg_partman 기능을 실행하고 pg_partman이 유지 관리하는 모든 파티션 세트의 소유자가 되기 위한 전용 Role 을 생성하는 것이 좋습니다. 이 Role 에는 최소한 다음 권한이 필요합니다.
CREATE ROLE partman WITH LOGIN;
GRANT ALL ON SCHEMA partman TO partman;
GRANT ALL ON ALL TABLES IN SCHEMA partman TO partman;
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA partman TO partman;
GRANT EXECUTE ON ALL PROCEDURES IN SCHEMA partman TO partman; — PG11+ only
GRANT ALL ON SCHEMA my_partition_schema TO partman;
GRANT TEMPORARY ON DATABASE mydb to partman; — allow creation of temp tables to move data out of default
Upgrade
위의 Installation 과 동일하게 “make install” 을 실행하여 스크립트 파일과 라이브러리를 배치합니다.그 후 PostgreSQL 자체에서 다음을 실행합니다.
ALTER EXTENSION pg_partman UPDATE TO ”;
pg_dump/restore를 수행 중이고 이전 버전에서 pg_partman을 업그레이드한 경우 pg_partman의 구성 테이블을 덤프 또는 복원할 때 –column-inserts 옵션을 사용하는 것이 좋습니다. 구성 열의 순서가 다를 수 있기 때문입니다.
당연한 이야기지만, Major 버전 업그레이드의 경우는 릴리즈 노트 등 참고 사항을 주의 깊게 읽어야합니다. 종종 추가 지침 및 업데이트에 대한 기타 중요한 고려사항이 있을 수 있습니다.
pg_partman 에 대한 일부 업데이트는 Extension 과 관련된 특정 데이터베이스 개체를 삭제하고 다시 만들어야 할 수도 있습니다.
PostgreSQL의 함수 또는 프로시저에서 PUBLIC 권한을 취소한 경우 업데이트 프로세스의 일부로 다시 생성되는 개체에 해당 권한을 다시 추가할 수 있습니다.
즉, PUBLIC 액세스를 취소하여 적용되는 모든 제한 사항은 업데이트 후 다시 적용해야 할 수 있습니다.
이를 완화하기 위해 pg_partman을 자체 스키마에 설치할 것을 권장합니다.
별도의 스키마에 설치하면 해당 특정 스키마에 대한 액세스를 쉽게 취소하거나 제어할 수 있으므로 업데이트 프로세스 중에 반복적으로 PUBLIC 액세스를 취소할 필요가 없습니다.
</aside>
지금까지 ‘PostgreSQL의 pg_partman’에 관해 알아보았습니다
‘PostgreSQL의 pgAdmin4’를 바로 이어서 확인해보세요!