新的 CentOS 安装。
我正在运行一个大型数据库(2GB sql 文件)的导入并且遇到了问题。SSH 客户端似乎失去了连接,导入似乎冻结了。我使用另一个窗口登录到 mysql 并且导入似乎已死,卡在特定的 3M 行表上。
所以我试过了
DROP DATABASE huge_db;
Run Code Online (Sandbox Code Playgroud)
15-20分钟后,什么都没有。在另一个窗口中,我做了:
/etc/init.d/mysqld restart
Run Code Online (Sandbox Code Playgroud)
DROP DB 窗口显示消息:SERVER SHUTDOWN。然后我实际上重新启动了物理服务器。
重新登录到 mysql,检查并且数据库还在那里,然后运行
DROP DATABASE huge_db;
Run Code Online (Sandbox Code Playgroud)
再一次,我已经等了大约 5 分钟。
再次,这是全新安装。这huge_db
是唯一的数据库(系统数据库除外)。我发誓我之前和很快就放弃了这么大的 db,但也许我错了。
我已经成功删除了数据库。大约花了 30 分钟。另请注意,当我认为 mysqldump 导入已死时,我认为我错了。终端连接丢失,但我认为该过程仍在运行。我很可能杀死了导入中间表(3M 行表),并且可能杀死了整个数据库的 3/4。“top”显示 mysql 只使用了 3% 的内存,而看起来它应该使用更多内存,这是一种误导。
删除数据库最终需要 30 分钟,因此,我可能不必重新启动服务器,也可能只是等待 DROP 完成,但我不知道 mysql 会如何对获取 DROP 查询做出反应它通过 mysqldump 导入的同一个数据库。
尽管如此,问题仍然存在,为什么在删除所有 db 文件并从 information_schema 中删除对 DB 的所有引用时,DROP 2GB 数据库需要 30 分钟以上?有什么大不了的?