跳转到主要内容

macavity

为 PostgreSQL 测试集群提供确定性的会话内故障注入

概览

扩展包名版本分类许可证语言
macavity0.2.0ADMINMITC
ID扩展名BinLibLoadCreateTrustReloc模式
5215macavity否是否是否是-

Testing release; destructive crash action affects the entire instance. Disposable test clusters only.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.2.01817161514macavity-
RPMPIGSTY0.2.01817161514macavity_$v-
DEBPIGSTY0.2.01817161514postgresql-$v-macavity-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/AN/A
el8.aarch64N/AN/A
el9.x86_64N/AN/A
el9.aarch64N/AN/A
el10.x86_64N/AN/A
el10.aarch64N/AN/A
d12.x86_64N/AN/A
d12.aarch64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
N/AN/A
d13.x86_64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
N/AN/A
d13.aarch64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
N/AN/A
u22.x86_64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
N/AN/A
u22.aarch64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
N/AN/A
u24.x86_64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
N/AN/A
u24.aarch64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
N/AN/A
u26.x86_64N/AN/A
u26.aarch64
PIGSTY 0.2.0
PIGSTY 0.2.0
PIGSTY 0.2.0
N/AN/A

构建

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

pig build pkg macavity         # 构建 RPM / DEB 包

安装

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

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

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

安装
pig install macavity;          # 当前活跃 PG 版本安装
pig
pig ext install -y macavity -v 18  # PG 18
pig ext install -y macavity -v 17  # PG 17
pig ext install -y macavity -v 16  # PG 16
dnf
dnf install -y macavity_18       # PG 18
dnf install -y macavity_17       # PG 17
dnf install -y macavity_16       # PG 16
apt
apt install -y postgresql-18-macavity   # PG 18
apt install -y postgresql-17-macavity   # PG 17
apt install -y postgresql-16-macavity   # PG 16

创建扩展:

CREATE EXTENSION macavity;

用法

来源:

macavity 0.2.0 为可丢弃的 PostgreSQL 测试集群提供确定性故障注入。上游在 Linux 上测试 PostgreSQL 16–18,尚未验证 PostgreSQL 19+ 及其他平台,Windows 不支持崩溃注入。崩溃动作可能断开所有会话并触发崩溃恢复。

事件用法

CREATE EXTENSION macavity;
SELECT * FROM macavity_points();
SELECT macavity_arm('executor_start', 'error', 1);
SELECT 1; -- expected injected error
SELECT * FROM macavity_status();
SELECT macavity_disarm();
SELECT macavity_reset();

事件表与升级

每个会话保存多个事件,各有固定 ID、独立计数及 armed、completed 或 disarmed 状态。macavity_arm 返回整数事件 ID;仅接收 ID 的重载会重新启用已完成或已停用事件。macavity_status 返回零到多行事件。macavity_disarm 保留事件历史,macavity_reset 则清空历史并重置 ID。

注入点为 executor_start、executor_end、before_commit 与 before_abort,动作为 error、delay 与 crash。延迟固定一秒,回滚期间不允许注入错误。同一次命中按延迟、崩溃、错误的顺序处理,同类事件按 ID 排序。

创建需要超级用户,无需共享预加载。只有注入点枚举向 PUBLIC 开放。使用 ALTER EXTENSION macavity UPDATE 升级会以新签名重新创建函数:须恢复显式授权、修改调用方并重新连接旧会话。当前 Pigsty 打包字段仍对应 0.1.0。

这个页面对您有帮助吗?