sql >> Base de Datos >  >> RDS >> Mysql

Cómo reemplazar MySQL con Percona en Plesk CentOS 7

Este artículo describe el procedimiento para reemplazar el servicio nativo MySQL®️ o MariaDB®️ que está preinstalado en cualquier servidor Plesk Onyx 11 CentOS 7 típico. El procedimiento describe la eliminación de los binarios existentes relacionados con MySQL y los reemplaza con una versión adecuada de los binarios de Percona. Una vez que estos binarios de Percona están en su lugar, se procesa una actualización típica de la versión incremental de MySQL en varias etapas para llevar las bases de datos existentes y los binarios de Percona a la versión deseada de Percona 5.7.

Expectativas de mantenimiento:duración y tiempo de inactividad

Duración de mantenimiento sugerida: 90 minutos
Tiempo de inactividad mínimo esperado: ~30 minutos de aleteo de servicio

El tiempo de inactividad esperado del servicio MySQL para este procedimiento es de menos de 30 minutos de disponibilidad del servicio MySQL subiendo y bajando repetidamente (flapping). Esta figura asume que todo va bien y no se encuentran errores imprevistos. La duración sugerida del mantenimiento permite tiempo para la resolución de problemas en caso de que surja un error, así como 30 minutos adicionales en el improbable caso de que se deban revertir todos los cambios y se cancele el plan de mantenimiento.

Descripción general de las etapas de mantenimiento

El plan se desglosa en tareas y etapas de preparación. Las tareas de preparación deben completarse antes de la hora de inicio de la ventana de mantenimiento. Las etapas se llevan a cabo a lo largo de la ventana del evento de mantenimiento y recorren todo el procedimiento para lograr cada etapa importante del esquema.

Preparación:tareas previas al mantenimiento

Estas dos tareas importantes deben completarse antes de la hora de inicio programada de su ventana de mantenimiento:

  • Copiar el archivo de configuración de MySQL existente
  • Copia de seguridad en escenario de los datos de la base de datos MySQL

Usamos la etapa cero en este plan para ayudar a acelerar el proceso de copia de seguridad de los datos de MySQL. Dado que la cantidad de datos que MySQL contendrá varía enormemente según el servidor, es una buena práctica ejecutar una solución de copia de seguridad incremental, como rsync, prior a la ventana de eventos de mantenimiento. Rsync hará una copia de seguridad de la mayoría de los datos estáticos mientras MySQL todavía se está ejecutando y luego hará una copia de seguridad de la diferencia incremental una vez que MySQL se apague por mantenimiento.

Copiar el archivo de configuración de MySQL existente:
1) Haga una copia de seguridad del archivo de configuración Yo mismo existente.

cp -pv /etc/my.cnf{,.pre-percona.bak}

Copia de seguridad por etapas de los datos de la base de datos MySQL:

2) Ejecute el siguiente rsync para clonar los datos de MySQL. [IMPORTANTE:se requiere barra diagonal final]

rsync -vaH /var/lib/mysql{,.pre-percona}/

Nota:las bases de datos muy grandes tardarán considerablemente más en completarse, así que planifique en consecuencia.

3) Espere a que se complete el paso 1 antes de comenzar la Etapa 1.

Etapa 1:cierre MySQL y vuelva a ejecutar Rsync Final Sync

El propósito de la etapa uno es garantizar que exista una copia de seguridad impecable de los datos de MySQL antes de continuar. Para lograr esto, es necesario detener por completo los servicios de MySQL para que se escriban todos los búferes y no se escriban cambios adicionales en la base de datos. Una vez detenido, rsync se ejecuta de nuevo para copiar las diferencias entre los datos prístinos ahora detenidos y los datos de copia de seguridad de destino.

1) Cierre el servicio MySQL/MariaDB

systemctl stop mysql

2) Vuelva a ejecutar el siguiente rsync para finalizar los datos clonados. [IMPORTANTE:se requiere barra diagonal final]

rsync -vaH /var/lib/mysql{,.pre-percona}/

3) Espere a que rsync se complete antes de pasar a la Etapa 3.

Etapa 2:reemplazar los binarios de MariaDB 5.5 con Percona 5.5

NOTA:MariaDB 5.5 es la versión instalada con Onyx 11 CentOS 7, por lo que este es el punto de partida.

Reemplazar los archivos binarios existentes implica eliminar los paquetes binarios necesarios del sistema utilizando la herramienta de línea de comandos RPM en lugar de yum. Esto permite eliminar los paquetes sin tocar ninguna de las dependencias que se vinculan a otros paquetes del sistema. Dado que Percona, como MariaDB, es un reemplazo directo de MySQL, una vez que los nuevos binarios estén en su lugar, las dependencias vinculadas no notarán la diferencia y funcionarán con normalidad.

1) Eliminar paquetes de MariaDB sin dependencias:

rpm -e --nodeps mariadb mariadb-libs mariadb-server

2) Elimine el paquete mariadb-devel (haga esto como un comando separado de arriba para evitar la falla de eliminación debido al paquete faltante)

rpm -e --nodeps mariadb-devel

3) Instalar el repositorio de Percona:

yum install https://www.percona.com/redir/downloads/percona-release/redhat/percona-release-0.1-4.noarch.rpm

4) Instale el servidor Percona DB:

yum install Percona-Server-client-55 Percona-Server-server-55 Percona-Server-shared-55

5) Ejecute los siguientes comandos (permite que el complemento InnoDB se cargue correctamente)

mv /var/lib/mysql/ibdata1 /var/lib/mysql/ibdata1.bak
cp -a /var/lib/mysql/ibdata1.bak /var/lib/mysql/ibdata1
mv /var/lib/mysql/ib_logfile0 /var/lib/mysql/ib_logfile0.bak
cp -a /var/lib/mysql/ib_logfile0.bak /var/lib/mysql/ib_logfile0
mv /var/lib/mysql/ib_logfile1 /var/lib/mysql/ib_logfile1.bak
cp -a /var/lib/mysql/ib_logfile1.bak /var/lib/mysql/ib_logfile1

6) Asegúrese de que no haya procesos escuchando en el puerto 3306 y elimine el proceso si lo hay.

netstat -tulpn | grep 3306

7) Inicie MySQL (ahora Percona 5.5)

service mysql start

8) Ejecute el script mysql_upgrade

mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`

9) [Opcional] Habilite Percona XtraDB Cluster UDF desde Percona Toolkit:

plesk db -e "CREATE FUNCTION fnv1a_64 RETURNS INTEGER SONAME 'libfnv1a_udf.so'"
plesk db -e "CREATE FUNCTION fnv_64 RETURNS INTEGER SONAME 'libfnv_udf.so'"
plesk db -e "CREATE FUNCTION murmur_hash RETURNS INTEGER SONAME 'libmurmur_udf.so'"

10) Reinicie MySQL para completar el procedimiento de actualización

systemctl start mysql

Etapa 3:Cambie el paquete Plesk MySQL al paquete Plesk MySQL Community

Ejecutar Percona en Plesk es una configuración no admitida. Por este motivo, para satisfacer las conexiones de dependencia entre el paquete Plesk MySQL y los nuevos binarios de Percona, es necesario cambiar la versión de Plesk MySQL para usar la versión Plesk MySQL Community en su lugar. El cambio es necesario para facilitar la actualización y degradación de las versiones de Percona.

1) Cree el archivo de configuración de repositorio necesario:

printf '[PLESK_17_8_11-dist] %s\nname=PLESK_17_5_3 dist %s\nbaseurl=http://autoinstall.plesk.com/PSA_17.8.11/dist-rpm-CentOS-7-x86_64/ %s\nenabled=1 %s\ngpgcheck=1 %s\n' > /etc/yum.repos.d/plesk178.repo

2) Instale el paquete “plesk-mysql-server-community” desde el nuevo repositorio:

yum install plesk-mysql-server-community

3) Deshabilite el archivo /etc/yum.repos.d/plesk178.repo porque ya no es necesario:

mv /etc/yum.repos.d/plesk178.repo{,.disabled}

4) Elimine el paquete ”plesk-mysql-server” sin tocar las dependencias.

rpm -e --nodeps plesk-mysql-server

Percona ahora debería estar instalado y funcionando en la versión base 5.5. Las siguientes etapas son idénticas al proceso típico de actualización de MySQL donde se actualizan los archivos binarios y luego las actualizaciones del esquema se realizan manualmente utilizando la herramienta mysql_upgrade.

Actualizar Percona 5.5 a 5.6

1) Detener el servicio MySQL:

service mysql stop

2) Eliminar paquetes de Percona 55 sin dependencias:

rpm -e --nodeps Percona-Server-shared-55 Percona-Server-client-55 Percona-Server-server-55

3) Instalar paquetes de Percona 56

yum install Percona-Server-shared-56 Percona-Server-client-56 Percona-Server-server-56

4) Asegúrese de que no haya procesos escuchando en el puerto 3306 y elimine el proceso si lo hay.

netstat -tulpn | grep 3306

5) Inicie el servicio MySQL:

service mysql start

6) Actualizar tablas MySQL:

mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`

Etapa 4:actualice Percona 5.6 a 5.7

1) Detener el servicio MySQL:

service mysql stop

2) Eliminar paquetes de Percona 56 sin dependencias:

rpm -e --nodeps Percona-Server-shared-56 Percona-Server-client-56 Percona-Server-server-56

3) Instalar paquetes de Percona 57

yum install Percona-Server-shared-57 Percona-Server-client-57 Percona-Server-server-57

4) Asegúrese de que no haya procesos escuchando en el puerto 3306 y elimine el proceso si lo hay.

netstat -tulpn | grep 3306

5) Inicie el servicio MySQL:

service mysql start

6) Actualizar tablas MySQL:

mysql_upgrade -uadmin -p`cat /etc/psa/.psa.shadow`

Etapa 5:finalización de la actualización

El sistema ahora debería estar ejecutando Percona 5.7 y ser completamente accesible para las aplicaciones. En esta etapa, se debe probar cualquier sitio o aplicación que use una base de datos e investigar cualquier error.