Enviado por admin el
Ayer, por motivos que no estoy aquí a explicar, tuve que actualizar el motor de la base de datos de un servidor de MariaDB 5.5 a MariaDB 10.4; esto en CentOS 7. Esta es la guía que he seguido y que me ha funcionado perfecto; resumiendo, primero se saca una copia del archivo de configuración del MariaDB instalado:
cp /etc/my.cnf /etc/my.cnf.bak
se para MariaDB:
systemctl stop mariadb
y se eliminan todos los paquetes de la vieja versión:
rpm -e --nodeps galera
yum remove mariadb mariadb-server
si en la /etc/yum.repos.d/ tienen un respositorio anterior de MariaDB, lo renombran; en mi caso:
mv /etc/yum.repos.d/MariaDB.repo /etc/yum.repos.d/MariaDB.repo.bak
luego crean el respositorio de MariaDB 10.4:
nano /etc/yum.repos.d/mariadb.repo
copian las siguientes lineas:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.4/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
guardan los cambios y limpian la cache de la paquetería y instalan la nueva versión:
yum clean all
yum install MariaDB-server MariaDB-client net-snmp perl-DBD-MySQL -y
vuelven a copiar el backup del archivo de configuración de MariaDB:
cp /etc/my.cnf.bak /etc/my.cnf
habilitan el arranque automático de la base de datos:
systemctl enable mariadb
inician el servidor:
systemctl start mariadb
ultimo pasaje, IMPORTANTISIMO, es actualizar las base de datos presentes con el comando:
mysql_upgrade -u root -pcontraseña
A partir de este momento todo debería funcionar todo correctamente. En mi caso el problema fue que tenía un Asterisk instalado en ese servidor que empezó a dar problemas con continuos crash y relativos archivos de core escrito en la carpeta /tmp que casi me llenan el disco. ¿Qué hice? Primero maté, figurativamente, el proceso de Asterisk:
pas aux | grep asterisk
kill numeroproceso
luego inicié asterisk con el comando:
asterisk -cvvvvvvvvvvvvvvvvvvvv
y me di cuenta que el sistema fallaba al momento de cargar el modulo res_odbc.so pues el problema estaba relacionado con ODBC. Lo primero que hice, para confirmar, fue intentar una conexión, vía ODBC a una de las base de datos configuradas:
isql basedatos usuario contraseña
en respuesta el sistema me arrojaba un error parecido al de Asterisk. Pues me di cuenta que el problema de todo el asunto era la librería del conector ODBC → MariaDB, pues el paso a seguir fue descargar los archivos binarios del conector para CentOS 7 64bit:
cd /tmp
wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.1.11/mari...
descomprimir el paquete:
tar -xf mariadb-connector-odbc-3.1.11-centos7-amd64.tar.gz
y mirar el contenido hasta encontrar el archivo que necesitaba:
libmaodbc.so
presente en la carpeta /mariadb-connector-odbc-3.1.11-centos7-amd64/lib64/mariadb; lo he copiado en la carpeta /usr/lib64/ y luego he modificado la configuración de odbc:
nano /etc/odbcinst.ini
cambiando este bloque:
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmyodbc5.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1
con:
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmaodbc.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1
He guardado los cambio y he probado nuevamente la conexión:
isql basedatos usuario contraseña
cuyo resultado ha sido:
Luego he iniciado nuevamente Asterisk con el comando:
asterisk -cvvvvvvvvvvvvv
y como todo funcionaba bien:
CLI> core stop now
y para terminar:
systemctl start asterisk
¡Listo!
Moral: antes de cualquier tipo de actualización importante analizar detenidamente que programas están involucrados y buscar en la red si esos programas funcionan con la nueva versión. Además de eso tener siempre un plan B (backup del servidor recién realizado, copia de todas las base de datos, etc...)
Comentarios recientes