我有这个命令:
mysqldump -uUSER1 -pPASS1 --single-transaction --quick --hex-blob --triggers database1 table | mysql -uUSER2 -pPASS2 database2
该表(来自论坛数据库的post
表)大约有1.5M行,并且多年来一直在增长。
直到最近,这一直有效。现在,超过一定数量的所有行都会系统地丢失。最奇怪的是,这种情况发生在没有任何错误信息的情况下。
另一个奇怪的事情是,将完全相同的表从完全相同的数据库传输到另一台服务器上的不同数据库,即
mysqldump -uUSER1 -pPASS1 --single-transaction --quick --hex-blob --triggers database1 table | mysql -hHOST2 -uUSER2 -pPASS2 database2
这仍然有效!
服务器上没有磁盘空间问题或类似的问题。我尝试手动将新行插入到同一个表中,没有问题。
我猜测可能存在某种缓冲或内存问题,将整个输出从mysqldump管道传输到一个管道中的mysql命令或什么东西?
是否有一个简单的解决方案,可能是通过调整mysqldump或mysql的一些参数,并不会涉及太复杂的东西,例如将传输分解为N行的块? (或者甚至是一种简单的方法)?