63.2. Custom 토토 핫 Resource Manager#

이 섹션은 코어 간의 인터페이스를 설명합니다PostgreSQL시스템 및 Custom 토토 핫 Resource Manager, 확장자가와 직접 통합 할 수 있도록합니다.토토 핫.

확장, 특히 APostgreSQL : 문서 : 17 : 61 장. 테이블 윈 토토 방법 인터페이스 정의또는토토 베이 : 문서 : 17 : 62 장 색인 액세스 방법 인터페이스 정의, 복구, 복제 및/또는에 토토 핫을 사용해야 할 수도 있습니다.43토토 꽁 머니17.

새로운 Custom 토토 핫 Resource Manager를 만들려면 먼저 정의rmgrdata자원 관리자 방법에 대한 구현이있는 구조. 참조src/backend/access/transam/readmeandsrc/include/access/accep/xlog_internal.hinPostgreSQL소스.

/*
 * 리소스 관리자를위한 메소드 테이블.
 *
 *이 구조는 pg_rmgr 정의와 동기화되어야합니다.
 * rmgr.c.
 *
 * rm_identify는 xl_info를 기준으로 레코드의 이름을 반환해야합니다 (
 * RMID에 대한 참조). 예를 들어, XLOG_BTREE_VACUUM의 이름이 지정됩니다
 * "진공". 그런 다음 RM_DESC를 호출하여 추가 세부 사항을 얻을 수 있습니다.
 * 사용 가능한 경우 기록하십시오 (예 : 마지막 블록).
 *
 * rm_mask는 리소스 관리자와 마스크가 수정 한 페이지를 입력으로 사용합니다.
 * wal_consistency_checking에 의해 플래그를 지정해서는 안되는 비트.
 *
 * rmgrtable []는 rmgrid 값으로 인덱싱됩니다 (rmgrlist.h 참조). rm_name이라면
 * NULL, 해당 RMGRTABLE 항목은 유효하지 않은 것으로 간주됩니다.
 */
typedef struct rmgrdata

    const char *rm_name;
    void ( *rm_redo) (xlogreaderstate *레코드);
    void ( *rm_desc) (StringInfo buf, xlogreaderstate *레코드);
    const char *( *rm_identify) (uint8 info);
    void (*rm_startup) (void);
    void (*rm_cleanup) (void);
    void ( *rm_mask) (char *pagedata, blocknumber blkno);
    void ( *rm_decode) (struct logicaldecodingcontext *ctx,
                              struct xlogrecordbuffer *buf);
 rmgrdata;

thesrc/test/modules/test_custom_rmgrs모듈은 커스텀 월드 리소스 관리자의 사용을 보여주는 작업 예제를 포함합니다.

그런 다음 새 리소스 관리자를 등록하십시오.

/*
 * 새 Custom 토토 핫 Resource Manager를 등록하십시오.
 *
 * 리소스 관리자 ID는 모든 확장에서 전 세계적으로 고유해야합니다. 나타내다
 * https://wiki.postgresql.org/wiki/customwalresourcemanagers에 a
 * 다른 확장과의 충돌을 피하기 위해 확장을위한 고유 한 rmgrid
 * 개발자. 개발 중에 RM_ExperImental_id를 사용하여 불필요하게 피하십시오
 * 새 ID를 예약합니다.
 */
extern void registercustomrmgr (rmgrid rmid, const rmgrdata *rmgr);

RegisterCustomRMGR확장 모듈에서 호출해야합니다_pg_init함수. 새로운 확장을 개발하는 동안 사용rm_experimental_idforrmid. 사용자에게 확장을 해제 할 준비가되면에서 새로운 리소스 관리자 ID를 예약하십시오.Custom 토토 핫 Resource Manager페이지.

확장 모듈 배치shared_preload_libraries동안 일찍로드되도록PostgreSQL스타트 업.

note

확장자가 남아 있어야합니다shared_preload_libraries시스템에 사용자 정의 토토 핫 레코드가 존재할 수있는 한. 그렇지 않으면PostgreSQL사용자 정의 토토 핫 레코드를 적용하거나 디코딩 할 수 없으므로 서버가 시작되지 않을 수 있습니다.

정정 제출

문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면