Sua melhor opção é a seguinte
mysqldump --single-transaction --databases db1 db2 > db1_db2.sql
A opção --single-transaction cria um ponto janela no tempo para todos os dados no dump. A única restrição é que você não execute nenhuma DDL
-
ALTER TABLE -
CREATE TABLE -
DROP TABLE -
RENAME TABLE -
TRUNCATE TABLE - Por favor, veja meu DBA StackExchange postar
row locking within ACID transaction innodbpara ver toda a declaração que pode prejudicar transações intermitentemente.
Contanto que você não execute nenhum destes durante a duração do mysqldump, o db1 e o db2 serão um instantâneo perfeito a partir do momento em que o mysqldump for iniciado.
Suas tabelas não-InnoDB devem estar bem, desde que você não faça nada para elas: sem DDL, sem INSERTs, sem UPDATEs, sem DELETEs.
ATUALIZAÇÃO 2014-06-26 19:43 EDT
Você perguntou
Are single-transaction and lock-all-tables mutually exclusive? Is one of them implied\default?
Diretamente da documentação do MySQL em - transação única
The --single-transaction option and the --lock-tables option are mutually exclusive because LOCK TABLES causes any pending transactions to be committed implicitly.
Sim, eles são mutuamente exclusivos.
Diretamente da documentação do MySQL em - bloqueio todas as tabelas
Lock all tables across all databases. This is achieved by acquiring a global read lock for the duration of the whole dump. This option automatically turns off --single-transaction and --lock-tables.
Assim, lock-all-tables desativará --single-transaction
FLUSH TABLES WITH READ LOCK; e todos os outros mecanismos de travamento pesados (tudo ou nada) não impedirão completamente que o InnoDB faça gravações no espaço de tabela do sistema. escrevi sobre antes no DBA StackExchange .
Aqui está um mapa do InnoDB para você visualizar as outras partes móveis do InnoDB:

Porfavor,leia