Tengo una pregunta sobre la copia de seguridad lógica de las bases de datos MySQL que usan MyISAM e InnoDB.
La mysqldump
utilidad admite estas dos opciones:
- transacción única : crea una instantánea coherente volcando todas las tablas en una sola transacción. Funciona SOLO para tablas almacenadas en motores de almacenamiento que admiten multiversioning (actualmente solo InnoDB lo hace) La opción [...] apaga automáticamente --lock-tables.
-x, --lock-all-tables : bloquea todas las tablas en todas las bases de datos. Esto se logra tomando un bloqueo de lectura global durante todo el volcado. Desactiva automáticamente --single-transaction y --lock-tables.
Para InnoDB, necesitamos
--single-transaction
para MyISAM, necesitamos - lock-tables o lock-all-tables (en caso de que necesitemos coherencia entre bases de datos).
Entonces, ¿cómo se supone que se debe hacer una copia de seguridad de una base de datos híbrida (una base de datos que usa los motores MyISAM e InnoDB)?
Editar:
Solo para aclarar, la pregunta podría reformularse así:
¿Las opciones de bloqueo- [todas-] tablas garantizan una copia de seguridad consistente de las tablas InnoDB?
--lock-all-tables
la copia de seguridad será consistente, ¿verdad? Y uno necesita ejecutar mysqldump solo una vez: será seguro tanto para InnoDB como para MyISAM al mismo tiempo, ¿verdad?Como una idea adicional para su situación, tal vez sea útil dedicar algunas ideas a configurar una configuración de esclavo maestro, donde su copia de seguridad se realiza desde el esclavo.
Una base de datos MySQL con una combinación de InnoDB y MyISAM siempre (hasta donde yo sé en cada configuración y con cada herramienta de copia de seguridad) bloqueará las tablas MyISAM para la fase de copia de seguridad MyISAM.
Para evitar este bloqueo, use esta configuración:
Todas las escrituras y lecturas van al Servidor A (Maestro). El servidor B (esclavo) solo se usa para la copia de seguridad. En el esclavo, instala una herramienta de respaldo o script de su elección, por ejemplo, MySQL Administrator.
Configure su copia de seguridad, por ejemplo, diariamente durante la noche. Los bloqueos están en el esclavo, lo que resulta en un retraso mientras el esclavo se bloquea, pero este retraso se recupera tan pronto como finaliza la copia de seguridad y se abre el bloqueo.
fuente