2011-06-02 16 views
5

Esta pregunta es probablemente para los expertos y administradores de MySQL que han hecho este tipo de migración anteriormente.Mover tablas y datos de MySQL desde el motor de almacenamiento MyISAM a InnoDB

Tengo 17 tablas MySQL, triggers y procedimientos almacenados en el motor de almacenamiento MyISAM. Estas tablas tienen alrededor de 8 datos MiB combinados. Como estoy moviendo la aplicación y la base de datos a Amazon EC2 y RDS, me preguntaba cuáles son las consideraciones clave al migrar tablas de MyISAM a InnoDB.

Los pasos que seguiré son más o menos los siguientes.

  1. Tablas del sistema en AWS RDS tiene que estar en MyISAM así que no hay competencia en eso.
  2. Cree 17 tablas con la misma estructura que existen en MyISAM y créelas en RDS InnoDB.
  3. Exportar datos de las tablas MyISAM e importarlos a las nuevas tablas creadas en RDS en InnoDB.
  4. Crea los desencadenantes, los procedimientos almacenados y las funciones en la base de datos InnoDB.

Cuando le pregunto acerca de las consideraciones clave de una migración como esto a través de motores de almacenamiento de MySQL que quiero saber desde el punto de vista de los administradores con experiencia si algo necesita expresamente a ser atendidos en el nivel de base de datos durante la migración de datos etc. para que el DB se comporte como debería y no haya problemas técnicos. Estoy preocupado principalmente porque he leído que InnoDB y la forma en que MyISAM usa el buffering, E/S, CPU y memoria son diferentes.

Estaré encantado de aceptar sus 2 centavos en este proceso.

Gracias.

* actualización *

innodb_buffer_pool_size - {DBInstanceClassMemory * 3/4} Esto es lo que se establece en este momento.

Estoy buscando otros parámetros también. Avíseme si desea ver los valores establecidos para cualquier otro parámetro específico.

Respuesta

2

Hay muchas diferencias entre MyISAM e InnoDB pero los puntos principales que se deben tener en cuenta antes de la migración., 1. copias de seguridad de datos no se pueden hacer simplemente copiando sobre los archivos como en MyISAM 2. InnoDB no funciona de manera optimizada cuando se ejecuta con opciones predeterminadas, deberá configurar y ajustar según sus necesidades. 3. InnoDB no tiene índices comprimidos como MyISAM por lo que va a tomar más espacio 4. InnoDB anexa automáticamente columnas de clave primaria a claves secundarias. así que asegúrese de que las columnas de la clave principal no sean grandes.

Aparte de eso, la migración debe ser fácil. 1. Cree tablas con estructuras similares a MyISAM pero solo con el motor cambiado a InnoDB. 2. Vuelque los datos de la tabla MyISAM 3. Importe los datos en el orden primario de las teclas en el motor InnoDB que ajusta la importación entre START TRANSACTION y COMMIT. Esta es la forma más rápida de cargar datos. 4. Cree los procedimientos almacenados y active.,. pero no tienen nada que ver con el motor de almacenamiento.

Puede informarme si necesita ayuda con la configuración de InnoDB.

+0

¿Cuáles son los parámetros InnoDB recomendados o los valores de configuración que se configurarán en RDS para que el rendimiento sea efectivo? Gracias. estoy siguiendo los pasos. – Aakash

0

El proceso de migración en sí es muy fácil. Dump registrará todos los objetos necesarios que necesitan ser reconstruidos. Solo tendrá que eliminar (o cambiar, si el valor predeterminado no es lo que desea) las cláusulas del motor de almacenamiento. De lo que puede tener que preocuparse es que las aplicaciones escritas para MyISAM pueden suponer que nunca será necesario realizar transacciones. Así que de todos modos, hace unos años me escapé con esto:

mysqldump --all-databases | perl -pwe 's/\) TYPE=MyISAM/\)/' >dump.sql 
mysql <dump.sql 

más la adición de los compromisos y retrotracciones cuando sea necesario.

1

Si desea convertir sus tablas actuales a InnoDB, aquí es el camino más fácil:

ALTER TABLE t1 ENGINE = InnoDB; 

Véase el MySQL doc.

Hacer esto en sus propios servidores antes de ir a la nube es una gran idea; ¡no cambie dos parámetros al mismo tiempo!

Hay muchas cosas que difieren en el motor InnoDB, pero estoy seguro de que unos minutos con su motor de búsqueda favorito se lo mostrará.

+0

esto funciona ... intenté cambiar el motor en las tablas MyISAM en mi servidor y lo cambió. Quiero entender qué cambios ocurren en realidad en las tablas y los datos cuando se ejecuta este script de modificación de motor ... ¡¡¡¡¡¡¡¡¡¡más sobre eso !! Gracias. – Aakash

+0

Obtienes toda la diversión de innodb (bloqueo de nivel de fila, etc.) y todo el dolor (sin contar (*), etc.). –

Cuestiones relacionadas