The backup solution that we are offering to Dave is a industry standard designed for recovery from complete system failure. It is performing both full and incremental backups over a private VPN to an undisclosed location. It is currently in use across our entire infrastructure and that of nearly all of our client base. We have not yet had to use it to perform a bare metal recovery, but in simulated failures we are able to recover a server from bare metal without any issue.
As for the database, we are using a module that invokes Percona's MySQL backup tool which is capable of taking a hot copy of the database without causing any service interruptions.
cPanel's backup system has several issues:
1) It uses mysqldump to dump the databases, which will lock tables to ensure a consistent dump. Unfortunately when you get a database as large and busy as Dave's, that lock time is too long and causes a backlog of requests eventually hitting the MySQL max connection limit.
2) The backup scheme is a simple compressed tar archive, creation of which is quite CPU expensive and can take several hours.
3) It doesn't backup the entire server, only the accounts on the server. Restoration from bare metal is not possible with cPanel's backup, it needs to be bootstrapped with a cPanel install first, not to mention all the customizations we have made to get this to perform as well as it does.
4) Recovery of a single file requires decompressing the entire archive (yes, even if you tell tar to just extract one file, it needs to decompress up to that point to find it). If the archive is old and only exists on a remote server such as Amazon S3 it requires transferring the entire archive to a server to work on it first.
5) cPanel works on a push model for backup, meaning that if an attacker gained access to the server they could use the cPanel access details to the remote site (Amazon S3) and delete the remote backups too.
The backup solution we offer deals with all of these issues and more.
Curious, how big is the DB now?
1-2GB or something like that.
I think Dave is listing the compressed size, this is where it is at current.
# du -hs /var/lib/mysql/
9.0G mysql/
# du -hs /home/REDACTED/
43G /home/REDACTED/