MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 5721|回复: 2
打印 上一主题 下一主题

谁遇到过这样的锁的问题?

[复制链接]
跳转到指定楼层
1#
发表于 2009-5-7 11:07:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个月前,给公司的两台linux机器配置了主从同步。
当时配置主从同步的时候,为了建快照,使用过一条flush tables with read lock语句。
后来使用unlock tables解锁了。
    两周前,开发人员反映,表被人锁了。我在master的机器上show processlist,发现进程里竟然有一行,用户名是我自己的帐户,命令是flush tables with read lock。
我觉得非常奇怪,我最近一周从来没有执行过flush tables with read lock这个命令,怎么会出现这样的进程呢? 然后我尝试用自己的帐户解锁,执行unlock tables,执行完后flush tables with read lock这个进程还在,表还是被锁。无奈,只好使用mysqladmin kill id把此线程给杀了。后来这样的问题,一周前又出现了一次。
       我们数据库的表全部使用Innodb存储引擎。所以平时备份使用的是以下的命令:
mysqldump -u username --password=password --single-transaction --master-data --add-drop-table database-name | gzip > /backups/$backupfile
执行这条语句,执行的是在线的、无阻塞的备份,不会锁表。
      那么到底是怎么回事呢?实在是想不明白。。。有谁碰到过类似的问题吗?交流一下吧。
非常感谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶 踩
2#
发表于 2009-5-7 18:03:51 | 只看该作者
问题的关键是找出flush tables with read lock这个语句是怎么触发的,从那儿来的了
看看执行时间,执行用户,检查脚本等...
3#
 楼主| 发表于 2009-5-8 10:58:13 | 只看该作者
2# kider


昨天晚上又发生了类似的情况。。。
看了日志,显示如下:

mysqldump: Couldn't execute 'FLUSH TABLES WITH READ LOCK': MySQL server has gone away (2006)

现在好像明白了,因为mysql server被中断了,所以定时备份的mysqldump无法执行FLUSH TABLES WITH READ LOCK这条语句,所以进程一激发就死在那里了,占用了大量的资源。

总结: mysqldump程序竟然会激发FLUSH TABLES WITH READ LOCK?! 但貌似只是锁很短的时间,然后自行解锁。(参考很多资料,说mysqldump的在线备份不会锁表的阿!)如果在这个时间里,mysql server出问题了,那么flush tables with read lock进程就僵死在那里了,然后就出现了应用界面无法访问数据库的情况。

不过还是很疑惑哦,以后继续关注这个问题吧。。。hehe
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-5-2 22:46 , Processed in 0.066527 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表