我使用
导入了一个大型的mysql数据库 mysql -uroot -ppassword dbName数据库在此过程中已经消失,可能是由于几天后超时...
有没有办法恢复它?或者我运气不好,需要删除现有的数据库并重新导入?
答案 0 :(得分:1)
在命令行上使用“--ignore”选项可以帮助“恢复”导入。
语义是它应该忽略任何已经导入的数据,只导入那些尚未存在的数据。
以下是ignore选项的MYSQL文档: http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#option_mysqlimport_ignore
答案 1 :(得分:1)
我正在使用INSERT IGNORE INTO
通过流编辑(sed
)我的转储文件,如下所示:
nice gunzip < dumpfile.sql.gz | sed -e "s|^INSERT INTO |INSERT IGNORE INTO |g" | nice mysql -uroot -p"password" DBName
答案 2 :(得分:0)
如果您知道查询的最后一个插入点,请将mysqldump
文件拆分到该点之前,并将insert替换为insert ignore。在尝试每个事务时,您可能不想插入忽略整个数据集。
此外,mysql服务器已经消失,也可能表示违反max_allowed_packet
大小。
答案 3 :(得分:-1)
“数据库已经消失”通常表示服务器崩溃,检查你的mysql日志/var/log/mysqld.log或者如果没有运行;
SELECT * FROM GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'LOG_ERROR';
我从来没有断开客户端连接,即使是在网络上运行一周。它看起来像你在本地连接所以不太可能断开连接。
如果您想恢复,可以执行以下操作;
希望这有帮助