我有一个特定表的情况,现在认为它包含4 PB的数据.我知道这听起来很酷,但我保证,它仅限于60GB分区.
该表中有9个字段.其中一个是domain_id字段.它是识别行的最佳字段,因为它们只有大约6300个.匹配的唯一其他字段选项有超过200万条记录,而这更加困难.
我不能做一个直接的mysqldump,因为它会尝试输出所有4PB数据并在它接近之前填充驱动器,所以我需要通过手术删除好东西,销毁数据库,然后重新创建它.
我相信如果我可以为每个domain_id记录执行转储,那么我将从中获取大部分可用数据.这就是我想要使用的:
MysqLdump -u root --skip-opt -q --no-create-info --skip-add-drop-table \ --max_allowed_packet=1000000000 database table --where="domain_id=10" \ > domains10.sql
使用这个我希望导出具有domain_id 10的每一行.
但是,当我检查导出时,我只得到1行,但是当我查看db时,有很多行.就好像运算符只找到一个,然后放弃.
我试过各种操作符.使用<或>我能够获得更多数据,但导出在数据受损的某些行停止.经过6000多次,我不能轻易地缩小出口中受影响的行.
所以,我需要的是一个基本上做我认为=会做的操作符,只需输出一个与特定字段匹配的所有记录.
还要注意,我得到这个DB甚至可以访问的唯一方法是通过innodb强制恢复3.所以我需要做到这一点,因为在完成之后,我必须删除数据库以使MysqL再次运行.
期待任何有用的答案.