Ejecute MySQLDump sin bloquear tablas

Resuelto Greg asked hace 15 años • 14 respuestas

Quiero copiar una base de datos de producción en vivo en mi base de datos de desarrollo local. ¿Hay alguna manera de hacer esto sin bloquear la base de datos de producción?

Actualmente estoy usando:

mysqldump -u root --password=xxx -h xxx my_db1 | mysql -u root --password=xxx -h localhost my_db1

Pero está bloqueando cada tabla mientras se ejecuta.

Greg avatar Sep 20 '08 02:09 Greg
Aceptado

¿Funciona la --lock-tables=falseopción?

Según la página de manual , si está volcando tablas InnoDB, puede usar la --single-transactionopción:

--lock-tables, -l

Lock all tables before dumping them. The tables are locked with READ
LOCAL to allow concurrent inserts in the case of MyISAM tables. For
transactional tables such as InnoDB and BDB, --single-transaction is
a much better option, because it does not need to lock the tables at
all.

Para base de datos innodb :

mysqldump --single-transaction=TRUE -u username -p DB
John Millikin avatar Sep 19 '2008 19:09 John Millikin

Esto es demasiado tarde, pero es bueno para cualquiera que esté buscando el tema. Si no eres innoDB y no te preocupa bloquear mientras volcas, simplemente usa la opción:

--lock-tables=false
Warren Krewenki avatar Aug 11 '2009 22:08 Warren Krewenki

La respuesta varía según el motor de almacenamiento que esté utilizando. El escenario ideal es si estás utilizando InnoDB. En ese caso, puede utilizar la --single-transactionbandera, que le proporcionará una instantánea coherente de la base de datos en el momento en que comience el volcado.

dvorak avatar Sep 19 '2008 20:09 dvorak