Convertir tablas de Antelope a Barracuda en mysql

En ocasiones se nos puede presentar el siguiente caso(caso dos):

uno :

tu sitio es un sitio normal de moodle, la pagina se carga normal y no tienes mayores reclamos sobre los tiempos de trabajo de los cursos y otros (tiempos de acceso, tiempos de respuesta, etc.) hasta el punto que es todos normal hacer el cambio directo sin cambiar las al formato “Barracuda” no es necesario puedes seguir trabajando normalmente “actualizar y todo lo que quieras”

Dos:

tienes un servidor que esta trabajando a full tiene requerimientos de cpu, disco duro (con acceso a bases de datos) muy alta (se cae aveces) y tienes que constantemente trabajar para que este el sitio en alta disponibilidad. En este caso si es recomendable hacer el cambio a “Barracuda” ya que el sistema de compresión que ofrece saca “mejor” provecho a las el sistema de transacciones que tiene como ventaja innodb. (cabe decir que esto tampoco es automático al momento de cambiar de formato y se tiene que además configurar)

Para convertir la bd a Barracuda haremos los siguiente:

1)Accedemos desde ssh y nos vamos al directorio raiz del moodle, nos metemos dentro de la ruta:

/admin/cli

2) Ejecutamos desde consola el archivo  mysql_compressed_rows.php con el parámetro -l lo que nos mostrará

si esta compactada o comprimida:

php mysql_compressed_rows.php -l

Si después de ejecutarlo nos sale Compact, significa que no es barracuda

[root@s18399522 cli]# php mysql_compressed_rows.php -l
data Compact (needs fixing)
data_fields Compact (needs fixing)
enrol_paypal Compact (needs fixing)
lti Compact (needs fixing)
user Compact (needs fixing)
user_info_field Compact (needs fixing)

3) Ejecutamos desde consola el archivo  mysql_compressed_rows.php con el parámetro -i lo que nos mostrará lo siguiente:

php mysql_compressed_rows.php -i

[root@s18399522 cli]# php mysql_compressed_rows.php -i
Database version: 5.5.47-MariaDB
Database name: cursosicde_
Database engine: InnoDB
innodb_file_per_table: OFF
innodb_file_format: Antelope

Como vemos en file format nos pone que es Antelope, por lo que debemos cambiarla a Barracuda.

4) Ejecutamos el comando php mysql_compressed_rows.php -f que cambiará dicha bd a barracuda.

NOTA: Si lanza el error este:

[root@s18399522 cli]# php mysql_compressed_rows.php -f
Cannot enable GLOBAL innodb_file_per_table setting, use –showsql option and execute the statements manually.!!! Error al escribir a la base de datos !!!

Tendremos que ejecutar las sentencias SQL manuales* desde el phpmyadmin.

5)Si todo ha ido bien, ejecutamos de nuevo  el comando

php mysql_compressed_rows.php -i

y Debería Aparecer ya que el file format es barracuda

[root@s18399522 cli]# php mysql_compressed_rows.php -i
Database version: 5.5.47-MariaDB
Database name: cursosicde_
Database engine: InnoDB
innodb_file_per_table: ON
innodb_file_format: Barracuda

EN EL CASO DE QUE DIERA EL ERROR DEL PUNTO 4 PROCEDEREMOS DE LA SIGUIENTE MANERA:

1) Nos vamos al phpmyadmin del servidor

2) Nos metemos dentro de la bd que queremos cambiar a Barracuda.

3) En la pestaña SQL introducimos la siguiente sentancia sql:

SET GLOBAL innodb_file_per_table=1

4) Acto seguido En la pestaña SQL introducimos la siguiente sentancia sql:

SET GLOBAL innodb_file_format=Barracuda

Si la ejecución de dichas sentencias ha ido bien nos mostrará un mensaje en verde diciendo que se ejecutaron correctamente.

5) Sólo queda comprobar desde la linea de comando(ssh) que efectivamente esa bd está en barracuda, para ello

nos vamos hacia la raiz del moodle y dentro del directorio admin/cli ejecutamos el script:

php mysql_compressed_rows.php -i

Si en lo que nos devuelve pone barracuda en el file_format es que está todo correcto:

[root@s18399522 cli]# php mysql_compressed_rows.php -i
Database version: 5.5.47-MariaDB
Database name: afiliados_
Database engine: InnoDB
innodb_file_per_table: ON
innodb_file_format: Barracuda

 

Fuentes: https://moodle.org/mod/forum/discuss.php?d=312220

https://docs.moodle.org/all/es/Administraci%C3%B3n_por_l%C3%ADnea_de_comando#Herramienta_para_convertir_tablas_de_innodb_a_Barracuda