Question

I see in the documentation that the database backup tools are divided into four categories: hot backups, cold backups, physical backups and logical backups.

I understand the the most important difference between cold and hot backup is that the latter can be done while the database is operating and receiving read&write queries (and the result will be consistent and atomic).

But then, how do I know if mysqldump has this "hot" aspect or "cold" aspect? The documentation just places it in the logical backup category and is not 100% clear about this (yes, it seems to mention that it uses the same snapshot of the DB at the beginning of the mysqldump procedure, which suggests it's definitely a HOT backup tool, but just wanted to double check here).

The tables use InnoDB engine.

Was it helpful?

Solution

First of all, categorizing the backup into the four mentioned categories is not accurate. You can categorize into (hot, warm, cold), and into (physical, logical). In other words, the backup can be cold and physical, or, hot and physical, etc. It cannot be (physical and logical).

Notice please that physical backup is better called "Raw backup", which is a copy of the data files, and other related file, at filesystem level.

mysqldump is logical, i.e. it produces the statements that re-create the DB and/or the tables and/or the data, etc. Therefore it is not "physical"

"Hot Backup" means that the backup can happen without affecting the users, and without taking the application or DB server down, AND, the resulting backup is consistent. There are different strategies and tools to make hot backups. Sometimes, it is conditional to the storage engines you use.

To answer your question: mysqldump is not hot backup tool by default. This is especially true if you are using MyISAM among other engines, and/or tables are being locked during the backup.

But if your tables are pure InnoDB, and you use the --single-transaction option with mysqldump, then, yes, it would be considered hot.

HTH

OTHER TIPS

From here, the complete command for a hot backup of a MySQL database using only InnoDB tables is:

mysqldump -u user -ppass --single-transaction --routines --triggers --all-databases > backup_db.sql

Note the gap between -u and user and the lack of a gap between -p and pass. This is correct - a quirk of MySQL which has caught me on more than one occasion.

This MySQL page also has a very clear and concise explanation of the difference between physical and logical backups.

Physical backups (also called raw):

Physical backups consist of raw copies of the directories and files that store database contents. This type of backup is suitable for large, important databases that need to be recovered quickly when problems occur.

This either involves shutting down the database or doing some sort of locking in order to prevent the database from changing during the process, and then taking a copy of the bits on disk.

Any updates are impossible during the process, unlike checkpointing (see below) where the database is "suspended" at a given point and then updates may proceed from that point while the backup is taken at the checkpoint.

The physical files (bits on disk) that make up the database are the ones that get backed up in a physical backup.

Read the page for more detail.

Logical backups:

Logical backup methods have these characteristics:

• The backup is done by querying the MySQL server to obtain database structure and content information.

What this basically means is that instead of being a binary bit for bit copy of the database at a given instant, this form of copy is a file consisting of the SQL that would be required to be run in order to reconstitute the database. Check out the contents of a mysqldump file (which is plain text, readable in any editor or using more/cat - what have you).

Hot v. Cold, or as the MySQL page calls them, Online v. Offline.

Hot - online - means that the server continues operating, Cold - offline - means that the database is not available for processing queries. With a hot backup however, there is a performance penalty to pay and that is why they are normally scheduled for off-peak times.

Again, I refer to the MySQL manual page for more detail (this page is one of the best written, clear and concise pieces of technical writing that I have come across in a long time).

You can read further there about Full v. Incremental backups and Snapshots. Come back here if you have further questions about these.

If you require a recommendation, I would recommend Percona's XtraBackup. It is a genuine hot backup solution for MySQL databases which use InnoDB tables - it does not work for the other engines, in particular MyIsam. The MyIsam architecture precludes hot backups - it requires locking of the database.

Finally, you might like to browse this post (author yours truly :-) ) which provides more detail on non-MySQL solutions to server backups.

Yes it is a hot backup.

  • It is run with the database online, queries operating etc
  • The dump will be consistent and atomic - a snapshot of the database as it looked when you initiated the dump

Jehad Keriaki nailed it. For InnoDB Engine Hot Backup, Percona is having a backup solution called "XtraBackup" which I believe is based on

Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top