PostgreSQL教程(8)归档日志配置
一、PostgreSQL 归档模式
在默认情况下,PostgreSQL采用的是非归档模式,在该模式下WAL日志被写满后会触发轮询,将前面的日志覆盖掉,导致WAL日志丢失。如果数据库实例变更频繁,那么WAL日志很可能在不断轮询,这样容易出现想恢复到某一刻数据的时候因为WAL日志被覆盖了而无法恢复的情况。所以在生产环境中都强烈建议开启归档模式,在归档模式下,PostgreSQL 会先将早期产生的WAL日志按照要求进行备份后再进行覆盖,避免WAL日志丢失。
二、PostgreSQL 日志归档配置
1、查看当前归档模式
#默认为off postgres=# show archive_mode; archive_mode -------------- off (1 row)
2、开启归档模式
修改 postgres.conf 配置文件,开启归档功能并配置归档命令
vi postgres.conf # 启用归档模式 archive_moed = on # 归档命令配置 # %p表示WAL日志的绝对路径,如/data/pgsql/pg_wal/000000010000000000000065 # %f表示WAL日志的文件名,不含路径,如000000010000000000000065 archive_command = 'test ! -f /data/pgarchive/%f && cp %p /data/pg_archive/%f'
3、查看当前WAL日志列表
postgres=# select * from pg_ls_waldir(); name | size | modification --------------------------+----------+------------------------ 0000000100000000000000B9 | 16777216 | 2025-09-08 22:30:41+08 0000000100000000000000BA | 16777216 | 2025-09-08 22:30:41+08 0000000100000000000000BB | 16777216 | 2025-09-08 22:30:41+08 0000000100000000000000BC | 16777216 | 2025-09-08 22:30:41+08 0000000100000000000000BD | 16777216 | 2025-09-08 22:30:41+08 0000000100000000000000BE | 16777216 | 2025-09-08 22:30:42+08 0000000100000000000000BF | 16777216 | 2025-09-08 22:30:42+08 0000000100000000000000C0 | 16777216 | 2025-09-08 22:30:42+08
4、查看归档日志占用磁盘情况
select count(*), pg_size_pretty(sum(size)) postgres-# from pg_ls_waldir(); count | pg_size_pretty -------+---------------- 64 | 1024 MB
5、手动切换WAL日志触发归档
在 PostgreSQL中,当 WAL 文件被写满或发生WAL切换时,数据库就会去执行 archive_command,把这个完整的 WAL 文件复制到归档目录,所以这里为了模拟效果进行手动的WAL日志切换,生成一个新的 WAL 文件
select pg_switch_wal();
6、查看是否正常归档
ls /data/pg_archive
三、归档日志的清理
由于PostgreSQL内部机制原因,它并不会自动对归档日志进行处理,而是持续存放在归档目录中。如果没有配置一个合理的清理策略,会导致磁盘空间被占满。为了避免上述问题,需要根据备份周期来进行归档日志的清理策略,通常保留两次全量备份之间的所有归档数据,这样可以起到一个增量备份的作用,可以灵活的进行时间点恢复。
在生产环境中,推荐使用 pgBackRest、barman 等工具,它们能在执行全量/增量备份后自动管理归档日志的保留和清理。如果不使用工具,则需要 DBA 定期编写脚本手工清理,确保既能满足恢复需求,又避免磁盘被日志撑满。另外 PostgreSQL 还提供了一个内置工具 pg_archivecleanup 用于清理不再需要的归档日志。
#pg_archivecleanup <归档目录路径> <保留的起始WAL文件> pg_archivecleanup /data/pgarchive 0000000100000000000000A5
猜你喜欢
MySQL | Oracle Oracle教程(4)快照与AWR报告
一、Oracle 快照Oracle中的快照(Snapshot)是指数据库在某个时间点对性能相关的数据做的一次全量采集。包括:系统资源使用情况、Top SQL、IO 性能指标、SGA、PGA 使用情况。...
MySQL | Oracle Oracle教程(3)Schema、用户与表空间
在完成 Oracle安装后,登录数据库实例可以看到有很多的模式(Schema),这些模式都是为了支持数据库核心组件、特性扩展、管理任务或者示例而创建,对于这部分默认模式,通常不需要进行操作。在生产规范...
MySQL | Oracle Oracle教程(2)Oracle19C命令行静默安装教程
在部分生产环境下可能并不支持通过图形化方式来安装Oracle数据库(比如需要脚本一键安装的场景),所以还需要了解通过命令行静默安装的方式来完整数据库的安装,以下是详细步骤一、系统环境配置部分1、确定内...
MySQL | Oracle Oracle教程(1)Oracle19C图形化安装详细教程
一、Oracle数据库版本说明Oracle作为最出名的商业数据库,其特点是可用性强、扩展性强、安全性强、稳定性强。相比MySQL,更适合高并发的业务。从18c版本开始,Oracle采用年份来对版本进行...
PostgreSQL PostgreSQL教程(13)使用pgbench进行基准测试
pgbench是一款 PostgreSQL 官方自带的数据库性能基准测试工具,可以模拟多用户并发事务,用于评估数据库在不同并发度、数据量和硬件环境下的性能表现。一、pgbench常用选项 ...
文章评论