gpt4 book ai didi

mysqldump 测试锁定表

转载 作者:行者123 更新时间:2023-11-29 10:53:20 26 4
gpt4 key购买 nike

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

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

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

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

  • mysqldump 锁定表上的读取操作还是仅写入操作?
  • 我们很少有数据库使用 MyISAM 在这种情况下我们应该采取什么措施来避免锁定

最佳答案

使用--single-transaction避免InnoDB表上的表锁。

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

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

关于mysqldump 测试锁定表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43382596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com