Convertir tablas MyISAM a InnoDB en WordPress

Convertir tablas MyISAM a InnoDB en WordPress

Como usuario de WordPress deberías saber que el «contenido» de nuestros sitios web se guarda en una base de datos a la que se accede cada vez que un visitante quiere leerlos. Por ese motivo, el rendimiento de aquélla es vital para ofrecer rápidamente el contenido. Entre los factores que influyen se encuentra el llamado «motor de almacenamiento (storage-engine)» ya que es el encargado  de almacenar, manejar y recuperar información de una tabla. Los motores más conocidos son MyISAM e InnoDB

El pasado día 3 de marzo, Fernando Tellado publicaba un estupendo artículo en el que exponía las razones para usar uno u otro tipo de motor de almacenamiento así como tres formas distintas para convertir tablas MyISAM a InnoDB (comandos SQL, phpMyAdmin y WP-CLI). Pero.. ¿y si ninguna de ella funciona?. A veces se producen errores que impiden la conversión y por eso vamos a explicar aquí una cuarta forma de realizar dicho cambio.

1. Copia de seguridad

Accedemos a phpMyAdmin, una herramienta que encontrarás en el panel de control de tu hosting. Seleccionamos la base de datos correspondiente, sección «EXPORTAR» y seleccionamos la opción «Rápido - mostrar sólo el mínimo de opciones de configuración» y el formato «SQL». Guardamos el archivo generado en nuestro ordenador.

Convertir tablas MyISAM a InnoDB en WordPress

2. Crear una nueva base de datos:

Aprovechamos que ya estamos en phpMyAdmin y creamos una nueva base de datos. Será en ésta donde volquemos el fichero SQL que hemos generado una vez hayamos modificado ciertas instrucciones como ahora veremos.

Tomamos nota del nombre de la base de datos (DB_NAME), del nombre de usuario de MySQL (DB_USER), de la contraseña de MySQL (DB_PASSWORD) y del host de MySQL (DB_HOST).

3. Modificar motor de almacenamiento.

Editamos el fichero SQL que hemos descargado. Según el tamaño, nos va a costar bastante tiempo tanto abrirlo como hacer modificaciones en él. Aconsejo editarlo con WordPad porque en la parte inferior izquierda se muestra el progreso de la carga.

Por cada tabla de la base de datos nos vamos a encontrar, además de los datos propiamente dichos, unas instrucciones para crearlas. Por ejemplo:

CREATE TABLE `wp_commentmeta` (
  `meta_id` bigint(20) UNSIGNED NOT NULL,
  `comment_id` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
  `meta_key` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `meta_value` longtext COLLATE utf8mb4_unicode_ci
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Fijaros la última línea:

) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

y en concreto en ENGINE=MyISAM. Es aquí donde se establece el motor de almacenamiento con el que se creará la tabla.

Nosotros, simplemente, vamos a CAMBIAR EN CADA TABLA la palabra MyISAM por InnoDB.

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

Solo modificamos, como podéis ver, el nombre del motor de almacenamiento. El resto de la línea no la tocamos. IMPORTANTE: se deben respetar las mayúsculas y minúsculas.

4. Importar y configurar.

Una vez modificado el archivo SQL, nos vamos de nuevo al panel de control de nuestro hosting para acceder  a la herramienta phpMyAdmin para, desde allí, seleccionar la base de datos que creamos en el punto 2 y proceder a la importación. De esta forma, la base de datos original no la tocamos en ningún momento.

Editamos el archivo «wp-config.php» (antes, como siempre, copia de seguridad del archivo). Allí encontraremos la sección "Ajustes de MySQL" que deberemos modificar con los datos que tomamos al crear la nueva base de datos (punto 2 de esta guía). Lo más sencillo y efectivo es «comentar» la línea que vayamos a modificar y luego añadir la nueva. Por ejemplo:

//define('DB_NAME', "base-de-datos-original");
define('DB_NAME', "base-de-datos-nueva");

Lo mismo para DB_USER, DB_PASSWORD y DB_HOST. De esta forma, conseguimos que nuestro WordPress conecte con la nueva base de datos en las que el motor de almacenamiento de todas las tablas será ya InnoDB. Si alfo fallara, podríamos volver sin problemas a la base de datos original ya que los datos de acceso siguen estando a mano en el «wp-config.php».

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *