Ejecute MySQLDump sin bloquear tablas
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.
¿Funciona la --lock-tables=false
opción?
Según la página de manual , si está volcando tablas InnoDB, puede usar la --single-transaction
opció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
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
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-transaction
bandera, que le proporcionará una instantánea coherente de la base de datos en el momento en que comience el volcado.