66. Custom WAL Resource Managers
Was this helpful?
Was this helpful?
This chapter explains the interface between the core PostgreSQL system and custom WAL resource managers, which enable extensions to integrate directly with the .
An extension, especially a or , may need to use WAL for recovery, replication, and/or . Custom resource managers are a more flexible alternative to (which does not support logical decoding), but more complex for an extension to implement.
To create a new custom WAL resource manager, first define an RmgrData
structure with implementations for the resource manager methods. Refer to src/backend/access/transam/README
and src/include/access/xlog_internal.h
in the PostgreSQL source.
Then, register your new resource manager.
The extension must remain in shared_preload_libraries as long as any custom WAL records may exist in the system. Otherwise PostgreSQL will not be able to apply or decode the custom WAL records, which may prevent the server from starting.
RegisterCustomRmgr
must be called from the extension module's function. While developing a new extension, use RM_EXPERIMENTAL_ID
for rmid
. When you are ready to release the extension to users, reserve a new resource manager ID at the page.
Place the extension module implementing the custom resource manager in so that it will be loaded early during PostgreSQL startup.