2025年9月25日: PostgreSQL 18 发布!

Greenmask v0.1.0 发布

发布于 2024-01-11,作者 Greenmask.io
相关开源项目

PostgreSQL 备份和混淆工具

我们很高兴地宣布 Greenmask v0.1.0 的发布,这是我们首个生产就绪的版本。本次发布解决了各种 bug,进行了改进,并重构了文档以增强清晰度。

Greenmask 概述

主要功能

  • 跨平台支持:Greenmask 使用 Go 开发,没有平台依赖。
  • 类型安全的数据库操作:确保数据验证和编码,维护数据完整性。
  • 转换验证:保证数据转换的准确性和可维护性。
  • 分区表支持:简化分区表的配置。
  • 无状态且向后兼容:兼容标准的 PostgreSQL 工具。
  • 并行执行:提高备份和恢复过程的效率。
  • 多种存储选项:支持本地和远程存储解决方案。

用例

  • 非常适合例行备份和恢复任务。
  • 有助于在暂存环境和分析中使用数据匿名化和数据屏蔽。

发布说明

改进

  • 提高了自定义转换器交互的详细程度,累积 stderr 数据并分批转发,而不是逐条写入。
  • 为 list-transformers 命令添加了位置参数,允许检索特定的转换器信息(例如,greenmask list-transformers RandomDate)。
  • 添加了 --version 参数,用于打印 greenmask 工具的版本。
  • 为 Int 和 Float 转换器添加了 Numeric 参数支持,但需要注意,在少数情况下可能导致超出范围的错误。

更新内容

  • 将依赖项更新到新版本。
  • 通过使用标准库的 JSON 编码器/解码器,增强了 JSON 行交互协议的稳定性。
  • 修改了向自定义转换器发送表元数据的方法;现在,它通过 stdin 在第一行以 JSON 格式发送,而不是通过命令行参数提供。
  • 重构了模板函数命名。
  • 重写了 NoiseDate 转换器的实现,以提高稳定性和可预测性。
  • 将 Dict 转换器的 fail_not_matched 参数的默认值更改为 true。
  • 重写了 Hash 转换器,现在提供 salt 参数并接收 base64 编码的 salt。如果未提供 salt,则会随机生成一个。
  • 为 NoiseDate 和 RandomDate 转换器的 truncate 参数添加了验证器,如果提供的值无效,则发出警告。
  • 增加了参数验证警告的详细程度,现在已将警告正确转发到 stdout。

修复

  • 解决了 pgx 驱动程序连接泄露问题。
  • 修复了 S3 存储的备份删除失败问题。
  • 修正了 Greenmask 工具的 cobra 自动完成功能。
  • 修复了 NOT NULL 约束验证。
  • 解决了 JSON API 交互问题,这些问题之前曾导致死锁和超时。
  • 修复了二进制参数的编码-解码,确保值能被正确转发到自定义转换器。
  • 修复了 RandomChoice 转换器在验证期间正确地 marshaling 和 unmarshaling 值。
  • 为 SetNull 转换器引入了 Nullable 属性,以增强 NOT NULL 约束验证。
  • 解决了 validate 命令的文本换行问题。
  • 修复了由于 Linux 平台依赖项导致的 Windows 构建失败问题。
  • 修正了与自定义转换器交互期间 stdout readline 缓冲区读取的问题。
  • 修复了集成测试。

生态系统变更

  • 为整个项目实现了 CI/CD。
  • 在 Docker-compose 中建立了一个用户友好的 Playground,包括:
  • 部署的 Minio 存储容器。
  • 包含原始数据库(Adventure Works)和转换后的数据库(空数据库)的 PostgreSQL 容器。
  • Greenmask 容器本身。
  • 重构了当前的 readme 文件。

社区参与

我们非常重视 PostgreSQL 社区的反馈和建议。您的见解和测试对于增强 Greenmask 的健壮性和实用性至关重要。

有用链接