有人知道mysqldump中某些表的屏蔽(匿名化)效率吗?我已经完成了我的解析器,但遗憾的是它在大转储上没有那么好(比如1GB ++的转储),因为它实际上会因解析而增加转储时间。
我所做的是首先解析表列(不应该花很长时间)并解析特定表的整个插入字符串。
我正在使用ruby并希望尽可能使用它。
我还研究了导出转储,转储它,通过内部ruby代码更新(屏蔽)然后再次导出转储的想法。虽然我没有尝试过多长时间。
目前的工作流程是: 从服务器获取转储,解压缩,然后转储到mysql
新的将是 从服务器获取转储,解压缩,屏蔽机密数据并转储到mysql
目前的工作流程最多需要2个小时才能进行1-2GB ++转储,但遗憾的是我已经花费了4个小时来完成新的转换,但它仍未在解析/屏蔽部分完成。
我还被建议通过取出变量和消耗更多内存的东西来即兴创建代码,因为据说ruby gc不是1:1的比例。我相信这是在REE(ruby企业版)上进行了优化,但我现在也在使用REE。
是否有人这样做并且可能分享他们的想法?感谢。
答案 0 :(得分:6)
多年以后,但对未来的搜索可能有用(比如我的)。如果你的结构没有一直改变,你可以做的是滥用mysqldump的custom where
函数来注入SQL。
例如:
mysqldump -options -w "0=1 union select field1, 'constant',
anonymize(field3) from table" database table
对于三列表,这将执行转储,第一列未触及,第二列设置为某个常量值,第三列使用任意函数进行修改。
答案 1 :(得分:4)