Ger*_*ald 5 mysql replication mysqldump performance backup
我正在运行带有几个客户数据库的 MySQL 服务器,其中一些数据库非常大。我们每天进行一次完整的 mysql 转储。大约需要半个小时才能完成。
在这段时间内,对 MySQL 服务器的每个请求都会得到非常缓慢的响应(有时大约 1 秒而不是 10 毫秒)。即使没有超时错误,我也希望看到查询在相当长的时间内完成,因此客户网站不会因挂起 MySQL 查询而减慢速度。
我研究了很多,了解了数据复制、LVM 快照、各种mysqldump
标志选项和其他变通方法,但没有什么能真正改善这种情况。
是否有任何选项可以在 MySQL 中设置查询优先级?
如果有一种方法可以定义查询优先级,我可以给备份进程一个较低的优先级,以确保所有其他查询执行得更快。该mysqldump
过程可能会SIGTSTP
在受到另一个请求的挑战时暂时暂停 ( ),并SIGCONT
在查询完成后继续 ( )。但是,我在 MySQL 中找不到这样的特性。
给mysqldump
进程一个更高的nice
值是行不通的,因为它只会增加备份进程和表锁存在的时间。(我正在锁定每个表。)此外,限制 IO 写入速率只会导致更长的痛苦。
除了 LVM 和复制之外,还有没有我错过的解决方案?
确实瓶颈是 IO。因为我是tar -czf
用来压缩文件的,而且 CPU 的性能非常好,所以驱动器根本无法处理如此快的所有数据(尽管我们使用了镜像 RAID 卷)。
的mysqldump
本身是完全没有问题的,但是tar
却极大地拖慢整个系统。
我现在pv
用来塑造管道流:
tar -czf - ./ | pv -q -L 10m > output.tgz
Run Code Online (Sandbox Code Playgroud)
pv
.gzip
通过top
. 我希望它有大约 50% 的 CPU 使用率,因此 IO 影响也降低到 50%。pv
会减慢一切(转储本身除外,它在压缩之前完成)。非常感谢@Michael - sqlbot 和其他人将我推向正确的方向。
归档时间: |
|
查看次数: |
3329 次 |
最近记录: |