patternsqlMinor
Consistent logical backup of databases that use MyISAM and InnoDB engines
Viewed 0 times
databasesconsistentinnodbenginesthatmyisamanduselogicalbackup
Problem
I have a question regarding the logical backup of MySQL databases
that use both MyISAM and InnoDB.
The
-
--single-transaction - Creates a consistent snapshot by dumping all tables in a single transaction. Works ONLY for tables stored in storage engines which support multiversioning (currently only InnoDB does)
[...]
Option automatically turns off --lock-tables.
-
-x, --lock-all-tables - Locks all tables across all databases. This is achieved by taking a global read lock for the duration of the whole dump. Automatically turns --single-transaction and --lock-tables off.
-
For InnoDB, we need
-
for MyISAM, we need - lock-tables or lock-all-tables (in case we need cross-database consistency).
So, how is a hybrid database (a database that uses both MyISAM and InnoDB engines) supposed to be backed up?
Edit:
Just to clarify, the question could be reformulated like this:
Do the lock-[all-]tables options guarantee a consistent backup of InnoDB tables?
that use both MyISAM and InnoDB.
The
mysqldump utility supports these two options:-
--single-transaction - Creates a consistent snapshot by dumping all tables in a single transaction. Works ONLY for tables stored in storage engines which support multiversioning (currently only InnoDB does)
[...]
Option automatically turns off --lock-tables.
-
-x, --lock-all-tables - Locks all tables across all databases. This is achieved by taking a global read lock for the duration of the whole dump. Automatically turns --single-transaction and --lock-tables off.
-
For InnoDB, we need
--single-transaction-
for MyISAM, we need - lock-tables or lock-all-tables (in case we need cross-database consistency).
So, how is a hybrid database (a database that uses both MyISAM and InnoDB engines) supposed to be backed up?
Edit:
Just to clarify, the question could be reformulated like this:
Do the lock-[all-]tables options guarantee a consistent backup of InnoDB tables?
Solution
With mysqldump you can only safely use
If you have the requirement for a hybrid backup, then you need the
Note: If you do have a hybrid mix, perhaps look at xtrabackup. It will only be locking during the MyISAM phase of the backup.
--single-transaction if all your tables are InnoDB, otherwise your backup is inconsistent.If you have the requirement for a hybrid backup, then you need the
lock-tables on all tables in the backup (default), which will be safe for all engines. It's also worth mentioning that the default options will make sure your backup is safe, you don't need to turn any special flag on.Note: If you do have a hybrid mix, perhaps look at xtrabackup. It will only be locking during the MyISAM phase of the backup.
Context
StackExchange Database Administrators Q#6363, answer score: 9
Revisions (0)
No revisions yet.