Configuración de una réplica MariaDB sobre Debian
En esta entrada documento como configurar una réplica de una base de datos MariaDB que se ejecuta sobre Debian tanto el servidor maestro como la réplica.
Para los ejemplos supondré que los servidores se llaman vps1
el correspondiente al maestro y vps2
el servidor de respaldo y réplica.
Asumo que en ambos servidores se instala el servicio de bases de datos MariaDB con su instalación a partir de los paquetes oficiales. En el caso del servidor de réplica vps2
significa que esta configuración es la más sencilla si sólo hacemos la réplica de un servidor (vps1
) y no necesitamos un servicio MariaDB en el propio servidor.
En caso contrario, y una solución que utilizo en otros casos, es ejecutar un binario con la misma versión que el servidor bajo un usuario nuevo en el servidor de réplica. De esa manera se puede tener un servidor de réplicas que sirvan a diferentes servidores maestros.
Procedimiento
Servidor maestro vps1
Preparamos el servidor vps1
para la replicación activando el log binario y creando un usuario que utilizaremos para el esclavo de replicación.
Nuevo fichero /etc/mysql/conf.d/binlog.cnf
:
Creación del usuario de replicación en vps1
:
Reiniciamos el servicio en vps1
para que se produzca la activación del log binario de manera efectiva.
Ahora ya podemos exportar todos los datos existentes junto a las coordenadas de replicación.
Ejecutar en vps1
:
Servidor esclavo vps2
Pasamos a trabajar en el servidor vps2
. Lo primero es instalar el servicio MariaDB y ajustar la configuración para trabajar como esclavo.
Instalación de MariaDB en vps2
:
Comentar bind-address
en my.cnf
para que escuche en todas las interfaces de red.
Añadir la configuración específica como esclavo en un nuevo fichero /etc/mysql/conf.d/esclavo.cnf
:
La parte de report_host
y report-port
es opcional pero yo la utilizo para poder luego ejectuar una comprobación remotamente de la consistencia de la réplica utilizando la aplicación pt-table-checksum
.
Actualización de la contraseña del usuario de sistema operativo
Un breve comentario sobre un detalle importante a tener en cuenta acerca de este procedimiento. El sistema operativo Debian al instalar un paquete de base de datos genera y guarda un usuario específico utilizado por el sistema operativo para diversas tareas, como simplemente, por ejemplo, parar el servicio de manera ordenada.
Dicho usuario se almacena en el fichero /etc/mysql/debian.cnf
en cada servidor. Siguiendo los pasos de este procedimiento estamos creando una réplica completa de vps1
a vps2
incluyendo todos los usuarios de la base de datos. Eso significa que al cargar los datos en vps2
estamos cargando los usuarios de vps1
incluyendo este usuario de sistema operativo.
La recomendación, pues, es copiar la contraseña de este usuario especial de vps1
a vps2
o realizar una replica excluyendo la base de datos mysql
.
Carga de datos e inicio de la réplica
Cargamos los datos iniciales:
Iniciamos la réplica: