我有一个 cronjob,基本上就是mysqldump whatever | gzip > backup.sql.gz
。数据库相当大。我注意到,在作业运行时,我的 apache 响应速度要慢得多,CPU 使用率如下
%CPU COMMAND
15.1 gzip
14.1 mysqld
13.1 mysqldump
有没有办法让这项工作使用更少的 CPU,也许代价是花费更长的时间?
答案1
ionice -c 3 nice mysqldump whatever | ionice -c 3 nice gzip > backup.sql.gz
答案2
答案3
如果您的 Web 应用正在写入“任何”数据库,则它必须等待 mysqldump 完成,因为它默认锁定表。如果是这种情况并且您降低了优先级,则会使问题变得更糟。
首先将数据库转储为纯文本,然后运行 gzip 压缩文件。这样 mysqldump 可以更快完成并释放锁,MySQL 和 Apache 可以在 gzip 运行时继续执行其工作。