Cómo configurar la replicación de mariadb (maestro-esclavo) en CentOS/RHEL 7 y Debian 8/9

Cómo configurar la replicación de mariadb (maestro-esclavo) en CentOS/RHEL 7 y Debian 8/9

Incluso cuando algunas personas escuchan la frase "Replicación de la base de datos", A menudo lo asocian con la necesidad de tener múltiples copias de la misma información para evitar la pérdida de datos en caso de falla del hardware o corrupción de datos. Si bien eso es cierto en cierta medida, hay mucho más en la replicación de la base de datos que el concepto común de hacer una copia de seguridad de una base de datos y disponibilidad de datos.

Replicación maestra-esclavo de Mariadb en CentOS/RHEL 7 y Debian 8/9

Entre otros beneficios de la replicación de la base de datos en una configuración de esclavo maestro podemos mencionar:

  1. Las copias de seguridad se pueden hacer en el servidor de esclavos sin afectar (y ser afectados por) las operaciones de escritura en el maestro.
  2. Las operaciones intensivas en recursos (como el análisis de datos) se pueden realizar en el esclavo sin influir en el rendimiento del maestro.

En este artículo explicaremos cómo configurar la replicación del esclavo maestro en Mariadb 10.1. A diferencia de la replicación clásica, Mariadb introdujo el concepto de IDS de transacción global (Gtids) en V10.0, que permite cambiar un esclavo para conectarse y replicar desde un maestro diferente fácilmente. Además de eso, el estado del esclavo se registra de manera segura (las actualizaciones del estado se realizan en la misma transacción que las actualizaciones de los datos).

Si estas buscando Mysql replicación bajo CentOS/RHEL 6, Siga esta guía Configurar la replicación MySQL (maestro-esclavo) en CentOS/RHEL 6

Instalación de mariadb 10.1 en Centos/Rhel 7 y Debian 8/9

Nuestro entorno de prueba consta de las siguientes máquinas (ambas son Centos 7)

Maestro: 192.168.0.18 esclavo: 192.168.0.19 

Para instalar la última versión de MariadB, necesitaremos agregar sus repositorios a nuestros servidores. Si está utilizando la versión anterior de Mariadb, digamos 5.5, considere actualizar a los últimos 10.1 versión que usa el artículo a continuación.

  1. UPCYUDA MARIADB 5.5 a Mariadb 10.1

En CentOS/RHEL

Crea un archivo llamado Mariada.repositorio adentro /etc/yum.repositar.d con el siguiente contenido en ambos Maestro y Esclavo Sistemas:

# Mariadb 10.Lista de repositorio de 1 CentOS-Creado 2016-01-23 14:16 UTC # http: // mariadb.org/mariadb/repositories/[mariadb] name = mariadb baseurl = http: // yum.mariada.org/10.1/centos7-amd64 gpgkey = https: // yum.mariada.org/rpm-gpg-key-mariadb gpgcheck = 1 

Guarde el archivo e instale mariadb en ambos servidores usando yum:

# Yum Update && Yum Instale Mariadb-Server Mariadb-Client 

En Debian/Ubuntu

Agregue la clave para autenticar paquetes y el repositorio de Mariadb:

# apt-get instalar software-properties-common # apt-key adv--recv-keys-keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db # add-apt-repository 'deb [arqu = amd64, i386] http: // espejo.edatel.neto.CO/Mariadb/Repo/10.1/Debian Jessie principal' 

Nota: Reemplazar la distribución nombre y nombre clave En la línea resaltada anterior.

Instalar usando apt-get dominio:

# APT-GET ACTUALIZACIÓN # APT-GET INSTALA MARIADB-SERVER 
Revise la versión de Mariadb en Master Slave-Server

Una vez que haya instalado mariadb, ejecute el mysql_secure_installation Procedimiento tanto en maestro como en esclavo, configuremos una base de datos de prueba de muestra en la máquina maestra.

Configuración de una base de datos MySQL en Master

Ahora nos configuraremos en el servidor maestro el Empleados base de datos de https: // github.com/datacharmer/test_db (que proporciona un conjunto de datos de 4 Millones de registros repartidos en seis tablas) en dos pasos simples:

Clonar el repositorio y úselo para importar la base de datos de muestra a su instalación de MariadB:

# clon git https: // github.com/datacharmer/test_db # cd test_db # mysql < employees.sql 

Configuración del servidor MySQL en el maestro

Para configurar el maestro, siga estos pasos:

PASO 1: Editar el /etc/mi.CNF archivo. Bajo la [mysqld] Sección, agregue las siguientes cuatro líneas:

log-bin server_id = 1 replicate-do-db = empleados bind-address = 192.168.0.18 

y reiniciar Mariadb:

# SystemCTL reiniciar mariadb 

PASO 2: Inicie sesión en el servidor mariadb como root, cree el esclavo de usuario y asigne las subvenciones necesarias:

Mariadb [(ninguno)]> Crear el usuario 'Slave'@'localhost' identificado por 'SlavePassword'; Mariadb [(ninguno)]> Grante esclavo de replicación en *.* A Slave identificado por 'SlavePassword' con la opción de subvención; Mariadb [(ninguno)]> Privilegios de descarga; Mariadb [(ninguno)]> Tablas de descarga con bloqueo de lectura; Mariadb [(ninguno)]> Mostrar estado maestro; 

El último dominio (Mostrar estado maestro) Devuelve la posición actual en el registro binario (las coordenadas exactas que indican exactamente en qué punto el esclavo debe comenzar a replicar desde:

Configurar MySQL Master para la replicación

PASO 3: Salga del aviso de mariadb (con salida;) y use el siguiente comando para tomar una instantánea de la base de datos de empleados. Cuando golpeas Ingresar, se le pedirá que escriba la contraseña para la raíz que se configuró anteriormente a través de mysql_secure_installation:

# mysqldump -u root -p empleados> empleados -dump.sql 

Después de completar el volcado, conecte nuevamente al servidor de la base de datos para desbloquear las tablas y luego salir:

Mariadb [(ninguno)]> Desbloquear tablas; Mariadb [(ninguno)]> salida; 

ETAPA 4: Copie el volcado al esclavo:

# SCP Empleados-DUMP.SQL [correo electrónico protegido]:/root/ 

Paso 5: Ejecutar el mysql_upgrade procedimiento para actualizar las tablas del sistema (se le pedirá que ingrese la contraseña de root de mariadb):

# mysql_upgrade -u root -p 

Paso 6: Permitir el servicio de la base de datos a través del firewall:

# firewall-cmd --add-service = mysql # firewall-cmd --add-service = mysql --permanent # firewall-cmd--relead 

Ahora configuremos el esclavo.

Configuración del servidor MySQL en Slave

Para configurar el esclavo, siga estos pasos:

PASO 1: Cree la cuenta para realizar las tareas de replicación. Conéctese al servidor mariadb local con:

# mysql -u root -p 

e ingrese la contraseña que configuró anteriormente.

PASO 2: Una vez conectado al servidor de la base de datos, cree el usuario y una base de datos vacía, y otorgue permisos:

Mariadb [(ninguno)]> Crear empleados de la base de datos; Mariadb [(ninguno)]> Otorgar todos los privilegios a los empleados.* A 'esclavo'@'localhost' con opción de subvención; Mariadb [(ninguno)]> Privilegios de descarga; 

PASO 3: Salga de la solicitud de mariadb y cargue el volcado creado en el servidor maestro:

# MySQL -U Root -P empleados < employees-dump.sql 

ETAPA 4: Editar el /etc/mi.CNF archivo para asignar un servidor IDENTIFICACIÓN al esclavo debajo del [mysqld] sección. Tenga en cuenta que debe ser un entero diferente a 1, Como usamos 1 En el maestro:

server_id = 2 replicate-do-db = empleados 

Reinicie el servidor de la base de datos:

# SystemCTL reiniciar mariadb 

Paso 5: Ejecutar el mysql_upgrade procedimiento para actualizar las tablas del sistema (se le pedirá que ingrese la contraseña de root de mariadb):

# mysql_upgrade -u root -p 

Paso 6: Una vez que el volcado se ha importado al esclavo, solo somos unos pocos pasos para comenzar a replicar. Inicie sesión en la base de datos y ejecute los siguientes comandos en la solicitud de mariadb. Prestar especial atención al Maestro_log_file y Maestro_log_pos variables, que deberían coincidir con los valores devueltos por Mostrar estado maestro En el paso 2 de "Configuración del maestro" anterior.

Mariadb [(ninguno)]> Cambiar maestro a master_host = "192.168.0.18 ", maestro_user =" esclavo ", maestro_password =" slovepassword ", maestro_port = 3306, maestro_log_file =" maestro-bin.000001 ", maestro_log_pos = 314, maestro_connect_cretry = 10, maestro_use_gtid = current_pos; 

Paso 7: Inicie el esclavo y verifique su estado sin salir del mensaje Mariadb:

Mariadb [(ninguno)]> Comienza esclava; Mariadb [(ninguno)]> Mostrar estado de esclavos \ g; 

No es que necesite esto ahora, pero tenga en cuenta que puede detener al esclavo con:

Mariadb [(ninguno)]> Detener esclavo; 

Si el Mostrar estado de esclavos \ g; El comando devuelve cualquier error. Use esos errores para solucionar problemas y luego ejecutar Comienza esclava; Para probar de nuevo.

Probar la replicación de la base de datos MySQL/Mariadb

Agreguemos un registro al empleados tabla en el servidor maestro:

Mariadb [(ninguno)]> Insertar en los empleados (Emp_no, Birth_Date, First_Name, Last_Name, Gender, Hire_Date) Valores (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12'); 

Luego verifique que este cambio se replicara en el esclavo:

Mariadb [(ninguno)]> Usar empleados; Mariadb [(ninguno)]> Seleccione * de los empleados donde emp_no = 500000; 
Verifique la replicación de la base de datos MySQL de mariadb

Como puede ver, la replicación funciona correctamente de maestro a esclavo.

Resumen

En este artículo hemos explicado cómo instalar la última versión de Mariadb en CentOS/RHEL 7 y Debian 8/9, y discutió cómo configurar la replicación del esclavo maestro con GTID. Para obtener más información, es posible que desee consultar la Guía de replicación de MariadB y no dude en contactarnos utilizando el formulario a continuación si tiene preguntas o comentarios.