我正在运行带有几个客户数据库的 MySQL 服务器,其中一些数据库非常大。我们每天进行一次完整的 mysql 转储。大约需要半个小时才能完成。
在这段时间内,对 MySQL 服务器的每个请求都会得到非常缓慢的响应(有时大约 1 秒而不是 10 毫秒)。即使没有超时错误,我也希望看到查询在相当长的时间内完成,因此客户网站不会因挂起 MySQL 查询而减慢速度。
我研究了很多,了解了数据复制、LVM 快照、各种mysqldump
标志选项和其他变通方法,但没有什么能真正改善这种情况。
是否有任何选项可以在 MySQL 中设置查询优先级?
如果有一种方法可以定义查询优先级,我可以给备份进程一个较低的优先级,以确保所有其他查询执行得更快。该mysqldump
过程可能会SIGTSTP
在受到另一个请求的挑战时暂时暂停 ( ),并SIGCONT
在查询完成后继续 ( )。但是,我在 MySQL 中找不到这样的特性。
给mysqldump
进程一个更高的nice
值是行不通的,因为它只会增加备份进程和表锁存在的时间。(我正在锁定每个表。)此外,限制 IO 写入速率只会导致更长的痛苦。
除了 LVM 和复制之外,还有没有我错过的解决方案?