我运行了mysql -u root -p gf< 〜/ gf_backup.sql恢复我的db。但是当我看到进程列表时,我发现一个查询已经闲置了很长时间。我不知道原因。
mysql> show processlist;
+-----+------+-----------+-------------+---------+-------+-----------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+-----------+-------------+---------+-------+-----------+------------------------------------------------------------------------------------------------------+
| 662 | root | localhost | gf | Query | 18925 | query end | INSERT INTO `gf_1` VALUES (1767654,'90026','Lddd',3343,34349),(1 |
| 672 | root | localhost | gf | Query | 0 | NULL | show processlist |
+-----+------+-----------+-------------+---------+-------+-----------+------------------------------------------------------------------------------------------------------+
答案 0 :(得分:1)
请使用df -h命令检查可用空间(如果在Linux / Unix下),如果空间不足,请不要杀死或重新启动MySQL,直到它在释放空间时赶上更改。
您可能还想检查my.cnf中的max_allowed_packet设置并将其设置为256M,请参阅http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_allowed_packet
答案 1 :(得分:0)
可能你的转储非常大并且包含很多规范化的数据(记录被分成一堆表,有一堆外键约束,索引等等。)
如果是这样,您可以尝试从SQL文件中删除所有约束和索引定义,然后导入数据并重新创建以前删除的指令。这是加速导入的一个众所周知的技巧,因为没有验证任何约束的INSERT
命令要快得多,之后可以在单个事务中创建索引等。
另请参阅:http://support.tigertech.net/mysql-large-inserts
当然,你应该先杀掉查询。并删除它已创建的所有片段。