¿Qué sucede si elimina una consulta alter de larga duración?


¿Qué sucede si elimina una consulta alter de larga duración? ¿La consulta alter simplemente revertirá? ¿Cuánto tiempo podría tomar (en proporción al tiempo que ya ha estado funcionando)?

¿Qué pasa si esa consulta se está replicando en otro servidor? ¿Al matar el proceso en el otro servidor se revertirá la consulta alter del servidor original?

Estamos ejecutando mysql

Author: B T, 2010-04-28

2 answers

Depende de lo que estés haciendo. Si está ejecutando el comando an alter table...add index en una tabla InnoDB (no está tan seguro de MyISAM), entonces simplemente se ejecutará y ejecutará mientras copia toda la maldita tabla lock-stock-and-barrel primero: si está en el medio de "copiar a la tabla temporal", entonces es prácticamente imparable.

Ver aquí:

En la mayoría de los casos, ALTER TABLE funciona por hacer una copia temporal de la mesa original. La alteración es en la copia, y luego el tabla original se suprime y el nuevo uno es renombrado. Mientras que ALTER TABLE es ejecutando, la tabla original es legible por otras sesiones. Actualizar y escribe a la tabla están estancados hasta que la nueva mesa esté lista, y luego son redirigidos automáticamente a la nueva tabla sin actualizaciones fallidas.

 13
Author: davek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-04-28 19:52:53

¿Qué pasa si esa consulta se está replicando en otro servidor?

El ALTER también se ejecutará en ese servidor, con los impactos asociados.

¿La eliminación del proceso en el otro servidor revertirá la consulta alter del servidor original?

No. El servidor original no tiene un canal posterior para aprender sobre lo que ocurrió (o no ocurrió) en el esclavo. Si matas al ALTER en el esclavo, entonces terminarás en la situación en la que el amo tiene el nueva restricción o índice, y el esclavo no lo hace. Esto rara vez es una receta para la felicidad:)

Una vez que un ALTER entra en el registro de replicación, debe dejar que se ejecute en todas partes o eliminarlo en todas partes.

 0
Author: dland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-26 10:14:29