pg_drop_events

记录删表删列删视图的事务号,辅助PITR确定时间点

概览

扩展包名版本分类许可证语言
pg_drop_events0.1.0ADMINPostgreSQLSQL
ID扩展名BinLibLoadCreateTrustReloc模式
5850pg_drop_eventspublic
相关扩展plpgsql pg_savior table_log pgaudit pg_auditor temporal_tables emaj pg_upless pgauditlogtofile

版本

类型仓库版本PG 大版本包名依赖
EXTMIXED0.1.01817161514pg_drop_eventsplpgsql
RPMPGDG0.1.01817161514pg_drop_events_$v-
DEBPIGSTY0.1.01817161514postgresql-$v-pg-drop-events-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
d12.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
d12.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
d13.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
d13.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
u22.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
u22.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
u24.x86_64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
u24.aarch64
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0
PIGSTY 0.1.0

构建

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

pig build pkg pg_drop_events         # 构建 RPM / DEB 包

安装

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

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

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

pig install pg_drop_events;          # 当前活跃 PG 版本安装
pig ext install -y pg_drop_events -v 18  # PG 18
pig ext install -y pg_drop_events -v 17  # PG 17
pig ext install -y pg_drop_events -v 16  # PG 16
pig ext install -y pg_drop_events -v 15  # PG 15
pig ext install -y pg_drop_events -v 14  # PG 14
dnf install -y pg_drop_events_18       # PG 18
dnf install -y pg_drop_events_17       # PG 17
dnf install -y pg_drop_events_16       # PG 16
dnf install -y pg_drop_events_15       # PG 15
dnf install -y pg_drop_events_14       # PG 14
apt install -y postgresql-18-pg-drop-events   # PG 18
apt install -y postgresql-17-pg-drop-events   # PG 17
apt install -y postgresql-16-pg-drop-events   # PG 16
apt install -y postgresql-15-pg-drop-events   # PG 15
apt install -y postgresql-14-pg-drop-events   # PG 14

创建扩展

CREATE EXTENSION pg_drop_events CASCADE;  -- 依赖: plpgsql

用法

pg_drop_events: 记录 DROP TABLE、DROP COLUMN、DROP MATERIALIZED VIEW 语句的事务 ID

pg_drop_events 扩展使用事件触发器自动记录对表、列和物化视图的 DROP 操作详情。记录的信息可用于意外删除后的时间点恢复(PITR)。

跟踪的操作

  • DROP TABLE
  • DROP COLUMN(通过 ALTER TABLE
  • DROP MATERIALIZED VIEW

记录的信息

描述
pid进程标识符
usename执行命令的数据库用户
querySQL 语句
xact_id事务标识符
wal_position预写日志位置
objid对象标识符
object_name被删除对象的完全限定名称
object_type对象分类(表、表列等)
xact_time事务时间戳

示例

CREATE EXTENSION pg_drop_events;

-- 删除一个表
DROP TABLE t.t3;
-- NOTICE: table t.t3 dropped by transaction 1085.

-- 查询事件日志
SELECT * FROM pg_drop_events;

时间点恢复

记录的数据直接映射到 PostgreSQL 恢复参数:

pg_drop_events 列恢复参数
xact_idrecovery_target_xid
xact_timerecovery_target_time
wal_positionrecovery_target_lsn

postgresql.confrecovery.conf 中使用这些值将数据库恢复到意外删除之前的时间点。


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