4

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

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

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

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

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

新的将从服务器获取转储,解压缩,屏蔽机密数据并转储到 mysql

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

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

有没有人这样做,也许分享他们的想法?谢谢。

4

2 回答 2

8

多年后,但可能对未来的搜索有用(比如我的)。如果你的结构没有一直变化,你可以做的是滥用custom wheremysqldump的功能注入SQL。

例如:

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

对于三列表,这将在第一列保持不变的情况下进行转储,第二列设置为某个常数值,第三列使用任意函数进行破坏。

于 2012-10-18T07:45:51.573 回答
4

您可以指定不想转储的表:http: //dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_ignore-table

于 2010-12-21T03:02:20.890 回答