我处于无法使用MySQL Dump的情况。这是一个很长的故事,但简而言之,由于与VMWare快照相关的i / o问题,服务器崩溃了。
因此,我不得不求助于编写脚本来尝试通过记录提取我的二进制数据记录。
这是我尝试过的一个例子:
mysql -u root -pPASSWORD --max-allowed-packet=1G -N -e 'select version_binary FROM version_binary WHERE version_id = 100' my_database > my_file
这会生成一个大致(不完全)正确大小的文件,但该文件已损坏。 的为什么吗
如果我在查询中转换为十六进制:
mysql -u root -pPASSWORD --max-allowed-packet=1G -N -e 'select HEX(version_binary) FROM version_binary WHERE version_id = 100' my_database > my_file.hex
然后使用:
xxd -r -p my_file.hex output.bin
它有效。
不幸的是,使用hex会消耗更多的空间并且需要更长的时间(我正在处理500GB的数据和大约1/2万条记录)所以我真的想让直接的二进制方法起作用。
修改 经过一番进一步的调查后,似乎腐败的二进制文件在整个过程中都有额外的影响。 The version on the left is not corrupt (extracted as hex and converted to binary) the version on the right is corrupt (extracted directly).