这些版本的发布标志着重要的里程碑,显著扩展了 Greenmask 的功能,并将其转变为一个简单、可扩展且可靠的数据库安全、数据匿名化和日常操作解决方案。我们的目标是构建一个核心系统,作为全面动态暂存环境和强大数据安全的基础。
这些更新引入了新功能,例如数据库子集、pgzip 支持、拓扑顺序恢复和重构的转换器,极大地增强了 Greenmask 的灵活性,以满足不同的业务需求。它们还包括许多修复和改进。
Greenmask 是一个强大的开源实用程序,专为逻辑数据库备份转储、匿名化、合成数据生成和恢复而设计。它是无状态的,不需要对数据库模式进行任何更改。它被设计为高度可定制的,并且与现有的 PostgreSQL 实用程序向后兼容,快速可靠。
非常适合用于
Greenmask 在 GitHub 上
PostgreSQL 17 支持 - 修订了移植库以支持 PostgreSQL 17
数据库子集 - 一项新功能,允许您定义数据库的子集,从而缩小转储大小 (#110)。这对于多用途特别有用,尤其适用于测试和开发环境。它支持
polymorphic_exprs
属性为具有多态引用的表定义虚拟引用,并使用 Greenmask 为此类表生成子集。--pgzip
可以通过并行压缩来加快转储和恢复过程。在一些测试中,它显示转储和恢复操作速度提高了 5 倍。插入格式恢复 - 为了灵活的恢复过程,Greenmask 现在支持 INSERT
格式的数据恢复。它根据转储中的 COPY
记录生成插入语句。您无需重新转储数据即可使用此功能;它可以在 restore
命令中定义。与 INSERT
格式相关的新功能列表
--on-conflict-do-nothing
,则生成带有 ON CONFLICT DO NOTHING
子句的 INSERT
语句。恢复数据批处理 (#173) - 默认情况下,COPY 协议仅在事务提交时返回错误。要覆盖此行为,请使用 --batch-size
标志指定在 COPY 命令期间在单个批次中插入的行数。当您要控制事务大小和提交时,这非常有用。
引入 keep_null
参数用于 RandomPerson
转换器。
cast_to
访问的预定义转换函数。这些函数涵盖了频繁的操作,例如 UnixTimestampToDate
和 IntToBool
。random
- 根据伪随机算法生成转换器值。hash
- 使用哈希函数生成转换器值。目前,它使用安全的但执行速度较慢的 sha3
哈希函数。在稳定版本中,可以选择 sha3
和 SipHash
。转储保留管理 - 为删除命令引入了保留参数 (#201)。引入了两个新状态:失败和进行中。如果缺少“完成”心跳信号或上次心跳时间戳超过 30 分钟,则认为转储失败。删除命令现在支持以下保留参数
--dry-run
:在测试模式下以详细输出运行删除操作,而实际上不删除任何内容。--before-date 2024-08-27T23:50:54+00:00
:删除早于指定日期的转储。日期必须以 RFC3339Nano 格式提供,例如:2021-01-01T00:00:00Z
。--retain-recent 10
:保留 N 个最近的转储,其中 N 由用户指定。--retain-for 1w2d3h4m5s6ms7us8ns
:保留指定持续时间的转储。格式支持周 (w)、天 (d)、小时 (h)、分钟 (m)、秒 (s)、毫秒 (ms)、微秒 (us) 和纳秒 (ns)。--prune-failed
:修剪(删除)所有失败的转储。--prune-unsafe
:修剪状态为“未知或失败”的转储。此选项仅与 --prune-failed
结合使用。如果您有任何问题或需要帮助,请随时与我们联系