mysqldump 测试锁定表

萨蒂什

我们有生产 mysql 数据库35G(innoDB),我们注意到mysqldump启动应用程序何时变得不稳定。我们使用以下命令运行转储

mysqldump --password=XXXX --add-drop-table foo | gzip -c > foo.dmp.gz

在谷歌搜索之后人们说mysqldump在转储数据之前锁定表所以人们建议使用--single-transaction标志innoDB

因此,对于实验,我手动启动了 mysqldump 并对表读/写运行了一些查询,它允许我在 mysqldump 运行时执行所有操作,那么我如何重现这种行为,即 mysqldump 确实锁定了我的表,从而导致应用程序可访问性?

  • mysqldump 锁定读取操作还是只写入表?
  • MyISAM在这种情况下,我们几乎没有使用数据库,我们应该怎么做才能避免锁定
迈克尔 - sqlbot

使用--single-transaction以避免对InnoDB表表锁。

尽管您真的不应该使用 MyISAM,但您对 MyISAM 无能为力。最好的解决方法是创建一个只读副本并从副本进行备份,这样锁就不会影响应用程序。

您应该发现,当备份正在运行时,READ LOCAL当前正在备份的单个数据库中的表上持有锁,这意味着您可以从表中读取但写入(插入/更新/删除)将阻塞,除非对于MyISAM 上的某些插入,可以在不干扰锁定的情况下实现。这些可能是允许的。看到这种情况发生的最简单方法是反复查询SHOW FULL PROCESSLIST;以查找阻塞的线程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章