pg_auditor

审计数据变更并提供闪回能力

概览

扩展包名版本分类许可证语言
pg_auditor0.2SECBSD 3-ClauseSQL
ID扩展名BinLibLoadCreateTrustReloc模式
7130pg_auditorauditor
相关扩展hstore pg_drop_events table_log pgaudit temporal_tables emaj pg_savior pg_upless pgauditlogtofile

pg15 rpm pkg name is pgaudit17_$v*

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.21817161514pg_auditorhstore
RPMPIGSTY0.21817161514pg_auditor_$v-
DEBPIGSTY0.21817161514postgresql-$v-pg-auditor-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
d12.aarch64
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
d13.x86_64
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
d13.aarch64
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
u22.x86_64
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
u22.aarch64
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
u24.x86_64
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
u24.aarch64
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2
PIGSTY 0.2

构建

您可以使用 pig build 命令构建 pg_auditor 扩展的 RPM / DEB 包:

pig build pkg pg_auditor         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_auditor 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_auditor;          # 当前活跃 PG 版本安装
pig ext install -y pg_auditor -v 18  # PG 18
pig ext install -y pg_auditor -v 17  # PG 17
pig ext install -y pg_auditor -v 16  # PG 16
pig ext install -y pg_auditor -v 15  # PG 15
pig ext install -y pg_auditor -v 14  # PG 14
dnf install -y pg_auditor_18       # PG 18
dnf install -y pg_auditor_17       # PG 17
dnf install -y pg_auditor_16       # PG 16
dnf install -y pg_auditor_15       # PG 15
dnf install -y pg_auditor_14       # PG 14
apt install -y postgresql-18-pg-auditor   # PG 18
apt install -y postgresql-17-pg-auditor   # PG 17
apt install -y postgresql-16-pg-auditor   # PG 16
apt install -y postgresql-15-pg-auditor   # PG 15
apt install -y postgresql-14-pg-auditor   # PG 14

创建扩展

CREATE EXTENSION pg_auditor CASCADE;  -- 依赖: hstore

用法

pg_auditor: 带闪回功能的数据变更审计

pg_auditor 记录指定表上的每一次数据修改(INSERT、UPDATE、DELETE),并允许部分或完整的事务闪回。

CREATE EXTENSION pg_auditor CASCADE;  -- 同时安装 hstore

审计控制

-- 开始审计一个表(默认审计所有 DML)
SELECT auditor.attach('fruit');

-- 仅审计特定操作
SELECT auditor.attach('fruit', ARRAY['INSERT', 'UPDATE']);

-- 仅审计特定列
SELECT auditor.attach('fruit', ARRAY['INSERT', 'UPDATE', 'DELETE'], ARRAY['name', 'weight']);

-- 停止审计
SELECT auditor.detach('fruit');

-- 管理单个语句/列
SELECT auditor.attach_statement('fruit', 'DELETE');
SELECT auditor.detach_statement('fruit', 'DELETE');
SELECT auditor.attach_column('fruit', 'weight');
SELECT auditor.detach_column('fruit', 'weight');

-- 防止 TRUNCATE
SELECT auditor.forbid_truncate('fruit');

查看审计日志

SELECT transaction_id, operation, old_rec, new_rec FROM auditor.log;

闪回函数

-- 撤销当前会话中最后 N 个事务
SELECT auditor.undo();          -- 撤销最后1个
SELECT auditor.undo(3);         -- 撤销最后3个
SELECT auditor.undo(1, true);   -- 覆盖其他会话

-- 取消特定事务
SELECT auditor.cancel(5557);

-- 将数据恢复到特定事务或时间戳
SELECT auditor.flashback(5556);
SELECT auditor.flashback('2021-02-08 14:40:00'::timestamp);

列演化追踪

SELECT * FROM auditor.evolution('fruit'::regclass, 'weight', 'orange'::text);
-- 显示给定主键的某列值的完整历史

最后修改 2026-03-14: update extension metadata (953cbd0)