Phiên bản được hỗ trợ:hiện tại(17) /16 / 15
Phiên bản phát triển:18 / Devel

63.2. Người kèo bóng đá c1 wal tùy chỉnh#

Phần này giải thích giao diện giữa lõiPostgreSQLTrình kèo bóng đá c1 WAL và hệ thống, cho phép các tiện ích mở rộng tích hợp trực tiếp vớikèo bóng đá c1.

Một phần mở rộng, đặc biệt làPostgreSQL: Tài liệu: 17:hoặcPostgreSQL: Tài liệu:, có thể cần sử dụng kèo bóng đá c1 để phục hồi, sao chép và/hoặckèo bóng đá việt.

Để tạo Trình kèo bóng đá c1 wal tùy chỉnh mới, trước tiên hãy xác định mộtrmgrdataCấu trúc với các triển khai cho các phương thức Trình kèo bóng đá c1. Tham khảosrc/phụ trợ/truy cập/transam/readme7843_7879trongPostgreSQLNguồn.

/*
 * Bảng phương thức cho người kèo bóng đá c1.
 *
 * Cấu trúc này phải được giữ đồng bộ với định nghĩa PG_RMGR trong
 * rmgr.c.
 *
 * rm_identify phải trả lại tên cho bản ghi dựa trên xl_info (không có
 * Tham chiếu đến RMID). Ví dụ: xlog_btree_vacuum sẽ được đặt tên
 * "Chắc". RM_DESC sau đó có thể được gọi để có được chi tiết bổ sung cho
 * Ghi, nếu có (ví dụ: khối cuối cùng).
 *
 * rm_mask lấy làm một trang được sửa đổi bởi Trình kèo bóng đá c1 và mặt nạ
 * ra các bit không nên được gắn cờ bởi wal_consistency_checking.
 *
 * Rmgrtable [] được lập chỉ mục bởi các giá trị rmgrid (xem rmgrlist.h). Nếu rm_name là
 * Null, mục nhập RMGRTable tương ứng được coi là không hợp lệ.
 */
typedef struct rmgrdata

    const char *rm_name;
    void ( *rm_redo) (bản ghi XLOGREADERSTATE *);
    void ( *rm_desc) (StringInfo Buf, XLOGREADERSTATE *RECORD);
    const char *( *rm_identify) (thông tin uint8);
    void (*rm_startup) (void);
    void (*rm_cleanup) (void);
    void ( *rm_mask) (char *pagedata, blocknumber blkno);
    void ( *rm_decode) (struct logicDecodingContext *ctx,
                              struct xlogrecordbuffer *buf);
 Rmgrdata;

Thesrc/test/modules/test_custom_rmgrsMô -đun chứa một ví dụ hoạt động, thể hiện việc sử dụng các trình kèo bóng đá c1 WAL tùy chỉnh.

Sau đó, hãy đăng ký Trình kèo bóng đá c1 mới của bạn.

9428_9888

Đăng kýCustomrmgr9946_9992_pg_initHàm. Trong khi phát triển tiện ích mở rộng mới, hãy sử dụngrm_experimental_idchoRMID. Khi bạn đã sẵn sàng để phát hành tiện ích mở rộng cho người dùng, hãy đặt ID Trình kèo bóng đá c1 mới tạiTrình kèo bóng đá c1 wal tùy chỉnhtrang.

Đặt mô -đun mở rộng triển khai Trình kèo bóng đá c1 tùy chỉnh trongshared_preload_l Libriesđể nó được tải sớm trong khiPostgreSQLKhởi động.

Lưu ý

Phần mở rộng phải ở trongshared_preload_l LibriesMiễn là bất kỳ bản ghi kèo bóng đá c1 tùy chỉnh nào có thể tồn tại trong hệ thống. Nếu không thìPostgreSQLSẽ không thể áp dụng hoặc giải mã các bản ghi kèo bóng đá c1 tùy chỉnh, có thể ngăn máy chủ bắt đầu.

Gửi hiệu kèo bóng đá c1

Nếu bạn thấy bất cứ điều gì trong kèo bóng đá c1 liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề kèo bóng đá c1 liệu.