table_log
记录某张表的修改日志并做表/行级时间点恢复
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
table_log | 0.6.4 | ADMIN | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 5860 | table_log | 否 | 是 | 否 | 是 | 否 | 否 | - |
| 相关扩展 | pgmemento pgaudit pg_drop_events data_historization table_version pgelog ddl_historization pgauditlogtofile pg_auditor pg_roast |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | MIXED | 0.6.4 | 1817161514 | table_log | - |
| RPM | PIGSTY | 0.6.4 | 1817161514 | table_log_$v | - |
| DEB | PGDG | 0.6.4 | 1817161514 | postgresql-$v-tablelog | - |
构建
您可以使用 pig build 命令构建 table_log 扩展的 RPM 包:
BASH
安装
您可以直接安装 table_log 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
创建扩展:
SQL
用法
table_log 扩展将对表的 INSERT、UPDATE 和 DELETE 操作记录到单独的日志表中,实现表或行级别的时间点恢复。
初始化日志
SQL
日志表结构
日志表镜像原始表的列,加上元数据:
| 列 | 描述 |
|---|---|
trigger_mode | 操作类型:INSERT、UPDATE、DELETE |
trigger_tuple | 元组版本:‘old’ 或 ’new’ |
trigger_changed | 变更时间戳 |
trigger_id | 序列 ID(级别 4+) |
trigger_user | 执行变更的用户(级别 5) |
时间点恢复
SQL
触发器函数
| 函数 | 描述 |
|---|---|
table_log() | 完整触发器函数,记录所有列 |
table_log_basic() | 基本触发器函数,更简单的记录 |
table_log_restore_table(...) | 将表状态恢复到给定时间戳 |