Xlog格式
typedef struct XLogPageHeaderData
{
【校验用magic数字】
uint16 xlp_magic; /* magic value for correctness checks */
【标志位信息】
uint16 xlp_info; /* flag bits, see below */
【时间线信息】
TimeLineID xlp_tli; /* TimeLineID of first record on page */
【当前页面在日志文件中的位置】
XLogRecPtr xlp_pageaddr; /* XLOG address of this page */
【日志跨页面保存,当前页面需要存的剩下的长度】
uint32 xlp_rem_len; /* total len of remaining data for record */
} XLogPageHeaderData;
日志之间有链接关系,xl_prev指向上一条日志的起始位置,下一条日志的位置用xl_tot_len可以找到,日志之间形成“双向链表”。
typedef struct XLogRecord
{
【日记长度】
uint32 xl_tot_len; /* total len of entire record */
【事务ID】
TransactionId xl_xid; /* xact id */
【上一条日志的LSN】
XLogRecPtr xl_prev; /* ptr to previous record in log */
【产生这个记录的动作】
uint8 xl_info; /* flag bits, see below */
【日志记录对应的资源管理器】
RmgrId xl_rmid; /* resource manager for this record */
/* 2 bytes of padding here, initialize to zero */
pg_crc32c xl_crc; /*

本文详细介绍了PostgreSQL的Xlog格式,包括XLOG RECORD的数据结构,如xl_info字段的高低四位信息。此外,还阐述了Xlog初始化过程,如wal_buffers参数的作用,以及pg_log、pg_xlog和pg_clog三者的功能和重要性。pg_log记录服务器状态和错误信息,pg_xlog保存事务日志,而pg_clog则存储事务元数据。在进行物理备份时,pg_xlog和pg_clog必须一同备份。
最低0.47元/天 解锁文章
2482

被折叠的 条评论
为什么被折叠?



