pg_drop_events
记录删表删列删视图的事务号,辅助PITR确定时间点
仓库
bolajiwahab/pg_drop_events
https://github.com/bolajiwahab/pg_drop_events
源码
pg_drop_events-0.1.0.tar.gz
pg_drop_events-0.1.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_drop_events | 0.1.0 | ADMIN | PostgreSQL | SQL |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 5850 | pg_drop_events | 否 | 否 | 否 | 是 | 否 | 否 | public |
| 相关扩展 | plpgsql pg_savior table_log pgaudit pg_auditor temporal_tables emaj pg_upless pgauditlogtofile |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | MIXED | 0.1.0 | 1817161514 | pg_drop_events | plpgsql |
| RPM | PGDG | 0.1.0 | 1817161514 | pg_drop_events_$v | - |
| DEB | PIGSTY | 0.1.0 | 1817161514 | postgresql-$v-pg-drop-events | - |
构建
您可以使用 pig build 命令构建 pg_drop_events 扩展的 RPM / DEB 包:
pig build pkg pg_drop_events # 构建 RPM / DEB 包
安装
您可以直接安装 pg_drop_events 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
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 TABLEDROP COLUMN(通过ALTER TABLE)DROP MATERIALIZED VIEW
记录的信息
| 列 | 描述 |
|---|---|
pid | 进程标识符 |
usename | 执行命令的数据库用户 |
query | SQL 语句 |
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_id | recovery_target_xid |
xact_time | recovery_target_time |
wal_position | recovery_target_lsn |
在 postgresql.conf 或 recovery.conf 中使用这些值将数据库恢复到意外删除之前的时间点。