So you want to have hourly backups of your database and store them compressed to save space, and people are using this database while you want to back it up at the same time. Thats tricky. I have worked with mySQL before and its best that no database transactions be happening while the database is being backed up. Reason behind this is that you could be backing up a partial transaction. Partial transaction is when the database is being backed up and at the same time someone is making changes to it, adding entries, changing values etc, and the backup and transaction of the user conflict to where only some of the data that they entered or changed is saved under that backup interval. For whatever transaction is happening during the backup you have the potential for corruption if you ever went to restore the database from this saved state in which there is only a partial of all data that was manipulated during that transaction and backup overlap.
Safest method would be to have a mirror database going on at the same time, the mirror database that clones the data of the actual database at a timed interval where you create your hourly backups off of. This other database does not have transactions with users and so the only time transactions happen are when it calls to replicate its database with that of the master database that everyone interacts with. This is the method I would go with to avoid a transaction occurring while the backup is happening. Transactional databases are pretty bulletproof but a backup at the same time that its in use, I try to avoid personally.
When i worked for a food store I had a setup like this where a mirror of the database updated every 15 minutes so that the maximum data loss was for a 15 minute span. I never went with hourly backups but could have if I wanted to. We just ran a daily backup after midnight for the start of the next day. We had the master go down hard when RAID set broke once and I was able to restore the master from the mirror in under 10 minutes over 100mbps network connection. Ran a SQL Dump and then pushed the AllDatabases dump file to the fixed master.
http://mysqlserverteam.com/creating-and-restoring-database-backups-with-mysqldump-and-mysql-enterprise-backup-part-1-of-2/