I think there's a possibility of winding up with an inconsistent backup, if the backup is made while people are using (updating) the database.
MySQL has the capability to lock its tables, but I'm not sure how to do that when making a backup.
My solution was to write a shell script that temporarily puts an .htaccess file containing "Deny from all" in the web document root, does the backup, and then restores the normal .htaccess file. That prevents any access to the database while the backup is being performed. The script also checks all the tables.