Revertir una instalación/update con yum

En una ocasión, un servidor con un panel Plesk actualizó automáticamente los paquetes del sistema (debido a una configuración errónea del Panel Plesk), actualizando también la versión de MySQL de 5.1 a 5.6, sin previo aviso. Esto, como es obvio, desembocó en fallos en la BBDD, y una pérdida de servicio.

Afortunadamente, existe una forma de revertir una actualización/instalación realizada con yum.

Primeramente, observaremos el histórico de yum:

 

Lo cual nos devolverá un listado similar a este:

 

Ahora, simplemente debemos revertir la actualización que deseemos, insertando su ID:

 

Con esto, revertiremos la update nº 37 realizada el 22/06

 

Cambiar motor de tabla en MySQL

No todos los programadores, a la hora de crear una base de datos, definen el motor de la misma, y, en versiones de MySQL más antiguas, el motor por defecto de MySQL es MyISAM. MyISAM es potente para bases de datos de “solo lectura” pero tiene el gran inconveniente de que provoca bloqueos, algo muy problemático en bases de datos de lectura/escritura continua y alterna.

Por ello, en ocasiones nos encontraremos con tablas de bases de datos que se encuentran en MyISAM y tienen esta problemática. La solución consiste simple y llanamente en modificar el motor de la tabla a InnoDB, y existen dos formas de realizar el cambio, una rápida y sencilla, y una más tediosa pero segura, y que recomiendo en casos en los que las tablas tengan muchos datos.

IMPORTANTE: Realizad siempre un backup de la BBDD/Tabla antes de realizar cualquier cambio en la misma

Para el primer caso, la solución es tan simple como realizar un alter table:

 

Con esto, el motor se cambiará a InnoDB, y no debería existir problemas, pero en ocasiones se producen inconsistencias, por lo que se recomienda el segundo procedimiento:

Para ello, entramos a MySQL y accedemos a la base de datos en la que se encuentra la tabla a modificar.

 

 

Una vez dentro, debemos realizar un show create table de la tabla a modificar, para que nos devuelva la sintaxis de creación de la tabla.

 

El show create table nos devolverá lo siguiente, en nuestro caso:

 

Lo que debemos hacer es editar el nombre de la tabla a un nombre temporal, y el motor a InnoDB:

 

Una vez  realizado esto, tendremos dos tablas, una “nombre_de_tabla” en myisam, y con contenido, y una “nombre_de_tabla_temporal” en innodb y vacía, por lo que el siguiente paso es volcar la información a la tabla temporal:

 

Por último, solo nos queda renombrar ambas tablas:

 

 

Y con esto, habríamos modificado la tabla a InnoDB de forma segura.

Aumentar número máximo de archivos en MariaDB/MySQL

Es muy común que, en servidor MySQL no configurados convenientemente, y que empiecen a tener algo de carga, se observen errores y pérdidas de servicio intermitentes debido a que se ha alcanzado el límite máximo de archivos abiertos por MariaDB/MySQL e incluso por el sistema.

La solución a este problema es muy sencilla, y consiste en aumentar el tamaño máximo de ficheros que MariaDB/MySQL pueden abrir.

Para ello, primeramente, debemos aumentar el número de ficheros máximos abiertos por el sistema, editando el fichero /etc/sysctl.conf y añadiendo la siguiente línea:

 

Después, editamos el número máximo de ficheros que puede abrir MySQL en particular, para ello, editamos /etc/security/limits.conf y añadimos/editamos las siguientes líneas:

 

Por supuesto, podemos cambiar los límites a nuestro antojo.

Por último, faltaría editar el script del servicio para añadir el límite de ficheros, para ello, editaríamos /usr/lib/systemd/system/mariadb.service (o mysqld.service) y añadimos las líneas:

 

Debajo del campo [service]

Por último, solo falta lanzar el comando

 

Y reiniciar MariaDB

 

 

Solucionar timeout en reinicio de servicios en CentOS

En varias ocasiones, me he encontrado con que al reiniciar servicios en un servidor CentOS con un uptime relativamente elevado (1 año de uptime o más), estos no se reinician como deben, y el service “x” restart devuelve constantemente un timeout, entrando el reinicio del servicio en bucle.

Además, esto me ha ocurrido en varias actualizaciones de paneles Plesk o Webmin, lo que puede dar lugar a problemas más graves como inconsistencias en el panel que intentamos actualizar.

Para solucionar el problema, debemos liberar las sesiones de systemd y posteriormente recargar el demonio.

Primeramente, crearemos un directorio al que mover dichas sesiones:

 

Seguidamente, moveremos todas las sesiones a dicho directorio (Puede tardar hasta un minuto si son muchas):

 

Y por último, recargamos el demonio:

 

Con esto, no deberiamos volver a observar los timeouts al reiniciar servicios.

Modificar el php_handler de todos los dominios en Plesk

En ocasiones, y por motivos de seguridad y rendimiento, es necesario modificar el modo de ejecución de un sitio web de módulo apache a FastCGI o FPM. Realizar esta tarea dominio por dominio es tediosa, pero con el siguiente script se puede realizar en segundos.

Consideraciones previas

Es necesario tener en cuenta antes del cambio que el document root de todos y cada uno de los dominios disponga de los permisos y el owner correspondiente.

Una vez comprobado esto, podemos proceder a realizar el cambio:

 

Con este for, obtendremos el listado de todos los dominios del servidor, los cuales iremos cambiando su modo de ejecución a FastCGI.

Por supuesto, es posible “saltarse” algún dominio mediante grep -v, y, así mismo, el modo de ejecución se puede cambiar también a fpm, por ejemplo. Los handlers disponibles son los siguientes (depende del servidor).