备份MySQL出现Can’t open file when using LOCK TABLES错误

最近每日备份MySQL数据库的时候,偶尔会出现:

mysqldump: Got error: 1016: Can’t open file: ‘./hitidea/wp_8_wpo_campaign_feed.frm’ (errno: 24) when using LOCK TABLES

这样的错误。

hitidea是一个有很多数据表的数据库(Wordpress MU),搜索了一下,发现只要在mysqldump的时候加上–lock-tables=false就可以解决问题。

mysqldump -u root -ppassword hitidea –lock-tables=false > hitidea.sql

从今天开始,我尝试每日发一个tip,内容是Web开发中遇到的小问题的解决方案,包括但不限于LAMP,Web前端。
这是第一天,希望能坚持下去。

如果你关注web开发或者linux,请订阅我的rss。

Tags: 相关Tags:

fvwm中实现类似windows下alt-tab效果 » « wine-door使用时报错,无法显示软件列表的问题

相关文章

  • No Related Posts

5 条评论 »

  1. zealot 于 2009-05-22 @ 10:21:53 留言

    [ 引用 ]

    如果dump时有写操作呢?
    errno 24原因是Too many open files,可能是打开的文件数太多没关闭,或者是大量socket阻塞或bug导致连接没及时关闭,最终导致文件描述符用光了,所以会是。

  2. berg 于 2009-05-22 @ 10:30:21 留言

    [ 引用 ]

    zealot在05月 22, 2009 10:21 am时说:

    如果dump时有写操作呢?
    errno 24原因是Too many open files,可能是打开的文件数太多没关闭,或者是大量socket阻塞或bug导致连接没及时关闭,最终导致文件描述符用光了,所以会是。

    恩,可能就是打开的文件数太多没有关闭吧,lock table的时候是不是要一直保持打开?

  3. zealot 于 2009-05-22 @ 18:06:34 留言

    [ 引用 ]

    berg在05月 22, 2009 10:30 am时说:

    zealot在05月 22, 2009 10:21 am时说:

    如果dump时有写操作呢?
    errno 24原因是Too many open files,可能是打开的文件数太多没关闭,或者是大量socket阻塞或bug导致连接没及时关闭,最终导致文件描述符用光了,所以会是。

    恩,可能就是打开的文件数太多没有关闭吧,lock table的时候是不是要一直保持打开?

    问题不一定是出在dump,有可能dump完全没问题,只是其他进程用光了文件描述符,导致其他进程无法读写文件或socket。
    这里有个介绍:http://dev.mysql.com/doc/refman/5.1/en/not-enough-file-handles.html
    以前搞多进程的server程序时子进程没有及时关闭从父进程继承过来socket file descriptor,导致文件描述符用光了,最后就不能接受请求了。当然,也有可能是服务器经常接受大量的并发请求而且需要很长时间响应后才关闭socket,这就需要调整文件描述符的最大限制,具体方法就是上面的链接。

  4. berg 于 2009-05-22 @ 23:51:42 留言

    [ 引用 ]

    zealot在05月 22, 2009 6:06 pm时说:

    berg在05月 22, 2009 10:30 am时说:

    zealot在05月 22, 2009 10:21 am时说:

    如果dump时有写操作呢?
    errno 24原因是Too many open files,可能是打开的文件数太多没关闭,或者是大量socket阻塞或bug导致连接没及时关闭,最终导致文件描述符用光了,所以会是。

    恩,可能就是打开的文件数太多没有关闭吧,lock table的时候是不是要一直保持打开?

    问题不一定是出在dump,有可能dump完全没问题,只是其他进程用光了文件描述符,导致其他进程无法读写文件或socket。
    这里有个介绍:http://dev.mysql.com/doc/refman/5.1/en/not-enough-file-handles.html
    以前搞多进程的server程序时子进程没有及时关闭从父进程继承过来socket file descriptor,导致文件描述符用光了,最后就不能接受请求了。当然,也有可能是服务器经常接受大量的并发请求而且需要很长时间响应后才关闭socket,这就需要调整文件描述符的最大限制,具体方法就是上面的链接。

    我还是觉得应该是dump本身lock table了,同时我要备份的这个数据库的表很多,导致文件描述符用完了。
    去掉了lock table 的选项以后,两天都没有出现这个问题了。
    至于你说的原因,我觉得也是可能的,其他进程把文件描述符用完了,导致dump没有可用的了。
    但是在我这个case中,应该不是由于其他进程导致的。

  5. sologuy 于 2010-05-19 @ 19:00:00 留言

    [ 引用 ]

    –lock-tables=false

    前面少了 – ,我试了好久都不行,应该是 -–lock-tables=false 谢谢了!终于解决了。

RSS 为此帖反馈评论 · 反向跟踪 网站

发表评论

只有思想的碰撞才能产生火花!请留下你宝贵的评论吧: