跳转到主要内容

pig v1.10.0

603 条目录记录、PostgreSQL 目标验证、恢复与 fork 安全修复、Inventory 保真,以及一致的自动化结果。

Pig v1.10.0 集中修复现有命令的正确性与安全边界:操作前验证 PostgreSQL 目标, 保留 Inventory 来源与 YAML 类型,让仓库、扩展及自动化结果准确反映实际执行情况。 内嵌目录从 600 条增至 603 条记录。内置 Pigsty 保持 4.5.0,默认 cargo-pgrx 保持 0.19.3。

PostgreSQL 目标与维护命令

  • 显式 -D 将 psql、ps、kill、vacuum、analyze、freeze、repack 绑定到所选实例, 包括 --all 枚举数据库的连接。启动 SQL 客户端前,PIG 检查 PID、数据目录、端口、socket 与进程身份。运行元数据无效、过期、来自其他目录或无法确认时直接失败,不回退到另一实例。
  • 未指定 -D 时,这些 SQL 命令保留原生客户端的连接默认值。pg clone 与 pg fork 继续使用各自的端口参数。提升后的时间线检查使用所选实例或其控制数据;无法解析时保留未知状态。
  • 计划与确认重试命令保留数据目录、PostgreSQL 版本、操作系统用户和维护选项。 VACUUM FULL 计划正确标明必须确认。
  • 维护命令的位置参数只接受数据库名称。包含 = 或以 postgres://、postgresql:// 开头的值在规划或执行前被拒绝,错误信息不回显该值。空格和非 ASCII 名称继续受支持。 生成的命令将名称放在 -- 后,避免把名为 --all 的数据库解释成命令选项。
  • vacuum、analyze、freeze --all 在开始维护前验证完整数据库列表。 需要连接串或被此边界拒绝的数据库名时,请使用原生客户端。

目标选择见 pig pg,数据库名称规则见 维护命令。

运行状态、恢复与 fork 安全

  • 权限失败、PID 元数据损坏、进程身份无法验证时,报告错误或未知状态,不能据此授权强制初始化、 恢复或 fork 替换。pg status 对权限失败返回 130201(退出码 3),其他运行探测失败 返回 130808(退出码 1)。计划将无法确认的前置条件标为 unknown。
  • 拒绝 PITR 确认或输入到达 EOF 时,在停止服务、恢复、启动之前返回 161001(退出码 7)。 未知状态不能提供可用于强制终止的 PID,也不能视为启动成功。恢复后的 SQL 检查要求目标已验证。
  • 替换非空的非托管 fork 目录,需要有效的归属元数据,且其中显式记录的目标路径必须匹配。 缺失、损坏或不匹配的元数据不能授权删除。运行中目标以及源目标路径关系的保护继续有效。
  • Clone 与 fork 必要时以所选数据库操作系统用户执行路径检查,支持权限为 0700 的私有数据目录。 无法访问或解析的路径不能绕过校验。托管孤儿副本仍可通过其托管名称清理。
  • 以数据库用户写文件时,使用私有的同目录临时文件并精确替换目标。新文件权限为 0600; 拒绝目录与符号链接目标,替换时不会覆盖指向旧文件的其他硬链接所见的内容。

PITR 参考介绍托管恢复流程;pig pb restore 仍是独立的恢复原语。

Inventory 与 Pigsty

  • sty deploy 与 do 显式向 Ansible 传递已解析的 Inventory 路径。命令行和环境变量中的 相对路径以调用者工作目录为基准;带引号的 ~/ 路径在解析前展开。选中的来源缺失或无效时, 不会静默回退到其他清单。
  • pg_users[].roles 同时保留角色名称字符串与结构化授权,包括授权状态及可选的 admin、set、inherit 属性。
  • 编辑、序列化与 CMDB 导出保留可能被 YAML 消费端解释成数字、日期或时间戳的字符串。 已有时间戳标量保留原始源码表示。独立 PyYAML 检查验证输出仍为字符串类型。
  • sty conf --proxy 接受 HTTP、HTTPS、ALL、NO 代理变量的大写与小写形式;HTTP、HTTPS 缺失时都会回退到 ALL_PROXY。版本补全按点分段匹配,指定 1.1 不会误选 1.10。

详情见 Inventory 来源选择与 pig sty。

软件仓库与扩展

  • 仓库命令在改文件前验证完整操作数列表。空值、逗号列表中的空项、不安全的仓库名在修改前失败。 只有真正不带参数的 repo rm 才备份全部仓库文件;repo rm all 展开为 node、pgsql、 infra 三个模块。删除结果保留原始请求,区分不存在的目标和实际删除的文件。 备份全部仓库后也会按 --update 刷新缓存。
  • 创建仓库时保留文档 RPM。调试包仍通过 --nodbg 排除,包名含 -docs 或 -doc 本身不会将其判为调试包。
  • 默认扩展列表、可用性摘要、刷新结果统计全部目录记录,包括 SQL 工具和保留的生命周期记录。 总数表示目录覆盖范围,不表示某台主机可以安装或能通过 CREATE EXTENSION 启用的扩展数。
  • 文本、JSON、YAML 共用可用性规则。已覆盖的 Linux 平台以包矩阵为准,矩阵缺项即不可用, 架构别名统一处理。macOS 状态仅表示声明的 PostgreSQL 版本支持,不承诺存在 RPM/DEB 包。 ext list -v 选择判断状态时使用的版本,不会过滤掉不可用记录。
  • ext import 在任何请求包无法解析或下载时返回失败,同时保留已成功下载的文件,报告完成与 失败部分。APT 虚拟依赖标记不再进入下载包名列表。已安装库扫描也能识别没有控制文件的目录条目。
  • 目录新增 pg_icu_parser、pg_vectorsearch、textsearch_intl 三条记录,同时刷新已有条目的 版本和平台元数据。安装前可用 pig ext avail NAME 检查目标。

详情见 pig repo与 pig ext。

构建与自动化

  • 多版本构建依赖按每个选定的 PostgreSQL 大版本展开包名,去重后安装。默认构建目标继续遵循 扩展元数据与本地安装规则,不会因包矩阵缺包而丢失。
  • Debian/Ubuntu 构建保留继承的 PATH 顺序,当前用户的 ~/.cargo/bin 存在时追加到末尾, 保留用户已选工具链的优先级。
  • Xray 设置识别完整旧服务定义,包括旧渲染器生成的无 marker macOS plist。 注释本身不能证明归属;被修改或外来的定义仍需要显式替换。配置一致的重复执行保留运行中的服务。
  • JSON/YAML 输出及 PIG_NON_INTERACTIVE=1 在 PIG 管理的适配器中一致禁用提示输入, 使用非交互 sudo。明确的数据输入通道仍可用;原生 Patronictl 转发保留交互和退出契约。
  • CMDB 连接串、旧 VMess 凭据、许可证密钥不会进入常规参数与失败详情。 显式凭据导出与 Inventory 原文显示保留文档约定的敏感输出行为。
  • Exporter HTTP 4xx/5xx 返回失败,仅包含数字状态码与标准说明,不包含响应体或自定义状态文本。 pig update 在不支持的平台上明确报错。命令帮助与中英文参考文档同步校准。
  • 更新 Go 依赖与验证工具。CI 增加 Linux 权限、实例边界和独立 YAML 消费端验收。

详情见 pig build、pig pe与全局命令行为。

升级注意事项

已有命令名和参数继续可用。自动化脚本需要处理部分导入失败、HTTP 错误、恢复取消和 PostgreSQL 状态无法确定时纠正后的失败状态。仓库操作数必须有效,需要确认的操作仍须显式确认, 维护命令应传入数据库名称。名称以 - 开头时,把全部选项放在前面,再写 -- 和数据库名。

按安装文档升级。