PostgreSQL主机无法自动清理pg_wal下wal文件

数据库数据目录下pg_wal的WAL文件在开启归档的模式下会将已归档WAL文件自动清理,具体流程是,转储WAL段文件到disk,写满或者使用pg_switch_wal()后,会生成000000xxxx.ready文件,调用archive_command命令且成功执行后,将ready文件更名为.done文件。而数据库会在执行checkpoint后计算出最旧的需保留的WAL文件,比该值更早的WAL文件均会被清理。

计算该保留的WAL文件通常由wal_keep_segments参数和复制槽位置控制。

在CreateCheckPoint里执行清理部分的代码如下:

/*
	 * Delete old log files, those no longer needed for last checkpoint to
	 * prevent the disk holding the xlog from growing full.
	 */
    //转换当前redo位置为wal文件名
	XLByteToSeg(RedoRecPtr, _logSegNo, wal_segment_size);
    //计算出当前情况下需保留的最旧wal文件
	KeepLogSeg(recptr, &_logSegNo);
	_logSegNo--;
    //从pg_wal下移除所有比_logSegNo文件号小的WAL文件
	RemoveOldXlogFiles(_logSegNo, RedoRecPtr, recptr);
/*
 * Retreat *logSegNo to the last segment that we need to retain because of
 * either wal_keep_segments or replication slots.
 *
 * This is calculated by subtracting wal_keep_segments from the 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值