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 mesa mientras se ejecuta.
Respuestas:
¿Funciona la
--lock-tables=false
opción?Según la página del manual , si está volcando tablas InnoDB puede usar la
--single-transaction
opción:Para innodb DB :
fuente
Esto es demasiado tarde, pero es bueno para cualquiera que esté buscando el tema. Si no es innoDB, y no le preocupa bloquearse mientras descarga, simplemente use la opción:
fuente
--single-transaction
.FLUSH TABLES WITH READ LOCK
cosas.La respuesta varía según el motor de almacenamiento que esté utilizando. El escenario ideal es si está utilizando InnoDB. En ese caso, puede usar el
--single-transaction
indicador, que le dará una instantánea coherente de la base de datos en el momento en que comienza el volcado.fuente
--skip-add-locks
me ayudófuente
--skip-add-locks
solo haría que la restauración del volcado sea más rápida. Esta no es una respuesta correcta.Para volcar tablas grandes, debe combinar la opción --single-transacción con --quick.
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_single-transaction
fuente
Para las tablas InnoDB, use la bandera
--single-transaction
MySQL DOCS
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_single-transaction
fuente
--skip-lock-tables
.Honestamente, configuraría la replicación para esto, ya que si no bloquea las tablas obtendrá datos inconsistentes del volcado.
Si el volcado lleva más tiempo, las tablas que ya se volcaron podrían haber cambiado junto con alguna tabla que está a punto de ser volcada.
Entonces, bloquee las tablas o use la replicación.
fuente
Esto es casi tan tarde en comparación con el tipo que dijo que llegó tarde a la respuesta original, pero en mi caso (MySQL a través de WAMP en Windows 7), tuve que usar:
fuente
fuente
Cuando use MySQL Workbench, en Exportación de datos, haga clic en Opciones avanzadas y desactive las opciones de "tablas de bloqueo".
fuente
Como ninguno de estos enfoques funcionó para mí, simplemente hice un:
Excluirá ambos
LOCK TABLE <x>
y losUNLOCK TABLES
comandos.Nota: ¡ Esperemos que sus datos no contengan esa cadena!
fuente
Debido a https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_lock-tables :
fuente
Otra respuesta tardía:
Si está intentando hacer una copia en caliente de la base de datos del servidor (en un entorno Linux) y el motor de la base de datos de todas las tablas es MyISAM, debe usarlo
mysqlhotcopy
.Según la documentación:
El
LOCK TABLES
tiempo depende del tiempo que el servidor puede copiar archivos MySQL (no hace un volcado).fuente
Hoy, incluso me enfrenté al mismo problema, pero no tenía acceso a la línea de comandos, así que abrí el archivo sql en el editor de Bloc de notas y eliminé la línea de abajo de las tablas
luego importé a mi entorno de desarrollo. Funciona bien. espero que ayude a alguien
fuente