有人知道在 mysqldump 中屏蔽(匿名化)某些表的效率吗?我已经完成了我的解析器,但不幸的是,它在大转储(比如说 1GB++ 的转储)上效果不佳,因为它确实会因解析而增加转储时间。

我所做的是首先解析表列(这不会花很长时间),然后解析特定表的整个插入字符串。

我正在使用 ruby​​,如果可能我想使用它。

我还研究了导出转储、转储、通过内部 ruby​​ 代码更新(屏蔽)它然后再次导出转储的想法。虽然我还没有尝试过这需要多长时间。

当前的工作流程是: 从服务器获取转储,解压缩,然后转储到 mysql

新的应该是 从服务器获取转储,解压缩,屏蔽 secret 数据并转储到 mysql

当前的工作流程最多需要 2 小时才能完成 1-2GB++ 的转储,但不幸的是,我已经在新工作流程上花费了 4 小时,但在解析/屏蔽部分仍未完成。

我还被建议通过删除变量和消耗更多内存的东西来改进代码,因为据说 ruby​​ gc 不是 1:1 的比率。我相信这是在 REE(ruby 企业版)上优化的,但我目前也在使用 REE。

有没有人这样做过并分享他们的想法?谢谢。

请您参考如下方法:

多年后,但可能对 future 的搜索有用(比如我的搜索)。如果您的结构不会一直发生变化,您可以做的是滥用 mysqldump 的 custom where 函数来注入(inject) SQL。

例如:

mysqldump -options -w "0=1 union select field1, 'constant', 
anonymize(field3) from table" database table 

对于三列表,这将进行转储,第一列保持不变,第二列设置为某个常量值,第三列用任意函数处理。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!