文章目录环境文档用途详细信息环境系统平台Linux x86-64 Red Hat Enterprise Linux 8,Linux x86-64 Red Hat Enterprise Linux 7版本9.0,6.0,4.5文档用途在具备高并发写入的生产环境中PostgreSQL 会产生大量WAL日志WAL。默认情况下每个 WAL 段文件的大小为16MB。如果直接使用操作系统命令如 cp进行归档可能消耗大量的备份存储空间及跨机房传输的网络带宽。由于 WAL 文件内部通常包含大量可压缩的重复数据可以考虑在归档过程中进行压缩利用 PostgreSQL 归档机制调用操作系统原生的 gzip 压缩工具在归档写入目标路径前对其进行流式压缩通常可节省 70% ~ 90% 的物理归档存储空间。详细信息一 解决方案与说明1.1 配置数据库归档参数确认数据库已启用归档模式show archive_mode;配置归档命令 archive_command-- 配置 gzip 流式压缩归档命令ALTERSYSTEMSETarchive_commandgzip %p /mnt/server/archivedir/%f.gz-- 重新加载配置使其生效SELECTpg_reload_conf();注意里面的 ‘’ 和 ‘’ 表示linux中的输入和输出重定向符不要修改机制解析在此命令中gzip %p 会将源 WAL 文件的内容作为数据流读入压缩引擎并通过 /mnt/server/archivedir/%f.gz 将压缩后的数据流写入目标文件。这种方式较为安全因为它不会对源目录 pg_wal 中的原始 WAL 文件执行任何修改或删除操作源文件的清理仍由 PostgreSQL 检查点Checkpoint机制自主管理。1.2 配置恢复命令参数在进行时间点恢复PITR时数据库需要读取上述已被压缩的 .gz 归档文件。操作步骤 在恢复配置文件内核PG 12及以上是 postgresql.conf中进行如下配置-- 配置 gunzip 流式解压恢复命令restore_commandgunzip /mnt/server/archivedir/%f.gz %p机制解析当数据库引擎请求名为 %f 的 WAL 文件时gunzip 会读取归档目录下的 .gz 压缩包并将其解压写入到内核指定的恢复路径 %p 中从而完成日志重放。二 注意事项归档压缩实际是以CPU换磁盘资源使用gzip算法对 CPU 具有一定消耗。此方案等同于用数据库服务器的 CPU 资源换取磁盘资源。如果数据库服务器 CPU 负载长期处于高位70%归档压缩可能导致业务运行缓慢并导致 WAL 延迟并堆积。归档解压需要时间在整体运维方案中还需要考虑解压过程中的时间消耗评估能否满足PITR故障恢复的时间要求。
基于gzip压缩归档日志大小的最佳实践
文章目录环境文档用途详细信息环境系统平台Linux x86-64 Red Hat Enterprise Linux 8,Linux x86-64 Red Hat Enterprise Linux 7版本9.0,6.0,4.5文档用途在具备高并发写入的生产环境中PostgreSQL 会产生大量WAL日志WAL。默认情况下每个 WAL 段文件的大小为16MB。如果直接使用操作系统命令如 cp进行归档可能消耗大量的备份存储空间及跨机房传输的网络带宽。由于 WAL 文件内部通常包含大量可压缩的重复数据可以考虑在归档过程中进行压缩利用 PostgreSQL 归档机制调用操作系统原生的 gzip 压缩工具在归档写入目标路径前对其进行流式压缩通常可节省 70% ~ 90% 的物理归档存储空间。详细信息一 解决方案与说明1.1 配置数据库归档参数确认数据库已启用归档模式show archive_mode;配置归档命令 archive_command-- 配置 gzip 流式压缩归档命令ALTERSYSTEMSETarchive_commandgzip %p /mnt/server/archivedir/%f.gz-- 重新加载配置使其生效SELECTpg_reload_conf();注意里面的 ‘’ 和 ‘’ 表示linux中的输入和输出重定向符不要修改机制解析在此命令中gzip %p 会将源 WAL 文件的内容作为数据流读入压缩引擎并通过 /mnt/server/archivedir/%f.gz 将压缩后的数据流写入目标文件。这种方式较为安全因为它不会对源目录 pg_wal 中的原始 WAL 文件执行任何修改或删除操作源文件的清理仍由 PostgreSQL 检查点Checkpoint机制自主管理。1.2 配置恢复命令参数在进行时间点恢复PITR时数据库需要读取上述已被压缩的 .gz 归档文件。操作步骤 在恢复配置文件内核PG 12及以上是 postgresql.conf中进行如下配置-- 配置 gunzip 流式解压恢复命令restore_commandgunzip /mnt/server/archivedir/%f.gz %p机制解析当数据库引擎请求名为 %f 的 WAL 文件时gunzip 会读取归档目录下的 .gz 压缩包并将其解压写入到内核指定的恢复路径 %p 中从而完成日志重放。二 注意事项归档压缩实际是以CPU换磁盘资源使用gzip算法对 CPU 具有一定消耗。此方案等同于用数据库服务器的 CPU 资源换取磁盘资源。如果数据库服务器 CPU 负载长期处于高位70%归档压缩可能导致业务运行缓慢并导致 WAL 延迟并堆积。归档解压需要时间在整体运维方案中还需要考虑解压过程中的时间消耗评估能否满足PITR故障恢复的时间要求。