导入mysql数据中断,如何恢复?

导入mysql数据中断,如何恢复?,mysql,database,import,Mysql,Database,Import,我使用 mysql-uroot-ppassworddbname 数据库在进程中已消失,可能是由于几天后超时。。。 有办法恢复吗?还是我运气不好,需要删除现有数据库并重新导入?在命令行上使用“-ignore”选项“继续”导入可能会有所帮助 语义是它应该忽略任何已经导入的数据,只导入尚未导入的数据 以下是关于忽略选项的MYSQL文档: 通常,“数据库已消失”表示服务器崩溃,请检查您的mysql日志/var/log/mysqld.log,如果没有,请运行 SELECT * FROM GLOBAL_V

我使用

mysql-uroot-ppassworddbname 数据库在进程中已消失,可能是由于几天后超时。。。
有办法恢复吗?还是我运气不好,需要删除现有数据库并重新导入?

在命令行上使用“-ignore”选项“继续”导入可能会有所帮助

语义是它应该忽略任何已经导入的数据,只导入尚未导入的数据

以下是关于忽略选项的MYSQL文档:

通常,“数据库已消失”表示服务器崩溃,请检查您的mysql日志/var/log/mysqld.log,如果没有,请运行

SELECT * FROM GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'LOG_ERROR';
我从未中断过客户端连接,即使是在网络上运行了一周。看起来您正在本地连接,因此不太可能断开连接

如果您想继续,您可以执行以下操作:

  • 检查错误日志以查看错误原因,并首先修复此问题
  • Grep转储文件;grep-irH“放置表”
  • 将恢复的表格与grep结果进行比较;注意最后一场比赛的那一行
  • 从最后一个匹配的数据库(含)创建新文件;tail--lines=+10000 database.sql>resume.sql
  • 或;正如其他人所说,在mysqlimport中使用ignorelines选项

希望这有助于我正在使用
通过流编辑(
sed
)将忽略插入我的转储文件,如下所示:

nice gunzip < dumpfile.sql.gz | sed -e "s|^INSERT INTO |INSERT IGNORE INTO |g" | nice mysql -uroot -p"password" DBName
nice gunzip
如果知道查询中的最后一个插入点,请将
mysqldump
文件拆分到该点之前,并将insert替换为insert ignore。您可能不希望插入或忽略整个数据集,因为每个事务都是尝试的


此外,mysql服务器已经离开也可能表示违反了
max\u allowed\u packet
size.

我也想知道这个问题的答案。我知道在使用phpMyAdmin时可以恢复导入,但我不确定在使用MySQL命令行工具时恢复是否有效。不,这是与数据库的连接超时,在某个地方会有一些保持活动或超时设置。