ionice -c 3 nice mysqldump whatever | ionice -c 3 nice gzip > backup.sql.gz
Eu tenho um cronjob que é basicamente nada mais que mysqldump whatever | gzip > backup.sql.gz
. O banco de dados é razoavelmente grande. Eu notei que, enquanto o trabalho está em execução, meu apache é muito menos responsivo, o uso da CPU é assim
%CPU COMMAND
15.1 gzip
14.1 mysqld
13.1 mysqldump
Existe uma maneira de fazer esse trabalho usar menos CPU, talvez ao preço de levar mais tempo?
Você pode usar agradável e renice para mudar a prioridade dos processos. Isso significa que eles terão menos acesso à CPU.
Você provavelmente não desejará renegar o mysqld, mas o mysqldump e o gzip podem ter suas prioridades alteradas com segurança.
Se você tiver problemas com o uso excessivo de disco, use ionice .
Se o seu aplicativo da Web estiver gravando no banco de dados 'whatever', ele deverá aguardar a conclusão do mysqldump, porque ele bloqueia as tabelas por padrão. Se este for o caso e você diminuir a prioridade, você vai piorar o problema.
Faça o dump do banco de dados primeiro como texto simples e, em seguida, execute gzip para compactar o arquivo. Dessa forma, o mysqldump pode ser concluído mais cedo e liberar o bloqueio, e o MySQL e o Apache podem fazer seus negócios enquanto o gzip é executado.
Tags process cron mysql apache-2.2 ubuntu