cron.d/mysql_dump:
17 22 * * * backup touch /home/backup/all_databases.sql && chmod 600 /home/backup \
/all_databases.sql && ionice -n 7 /usr/bin/mysqldump -u root -ppassword --opt --all- \
databases > /home/backup/all_databases.sql && nice -n 20 bzip2 -f \
/home/backupall_databases.sql
ionice for I/O priority and nice for cpu priority.
Run vmstat 5, check the column that says WA. High value means the CPU is waiting for I/O. Use ionice, if its just CPU load, use nice.
Response to update:
Seems you are correct. It calls mysql which isn't niced. I guess you could use renice for this and set the nice value after it is run.
I don't have a sufficiently big database to dump atm to make a useful script for you though.
Replication, as your link suggest, is one way to go. Replicate, stop and dump, on anthoer host.