Estou realizando backups regulares usando mysqldump em um esquema que consiste inteiramente em tabelas InnoDB. A documentação do mysqldump tem a dizer sobre --single-transaction
:
A opção --single-transaction e a opção --lock-tables são mutuamente exclusivas porque LOCK TABLES faz com que quaisquer transações pendentes sejam confirmadas implicitamente.
No entanto, aproximadamente 1 bilhão de postagens e respostas de blog aqui (e em outros lugares da rede de troca de pilha) recomendam:
mysqldump --single-transaction --skip-lock-tables my_database > my_database.sql
Se as duas opções forem mutuamente exclusivas, acho que especificar --single-transaction
deve ser suficiente. No entanto, os documentos também afirmam isso sobre --opt
:
Esta opção, habilitada por padrão, é um atalho para a combinação de --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick -- set-charset.
O que me leva a acreditar que --lock-tables
está ativado por padrão.
Preciso especificar --skip-lock-tables
junto com --single-transaction
ou apenas definir o último o suficiente para garantir que as tabelas não sejam bloqueadas durante um despejo?
Se você usar a
--single-transaction
opção, ela será desativada--lock-tables
. É isso que a documentação significa quando diz que eles são mutuamente exclusivos.https://github.com/mysql/mysql-server/blob/8.0/client/mysqldump.cc#L1076