LinuxParty

Ratio: 4 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio desactivado
 

Incluso cuando algunas personas de TI escuchan la frase " replicación de la base de datos ", a menudo la 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, la replicación de la base de datos es mucho más que el concepto común de respaldar una base de datos y la disponibilidad de datos.

Replicación MariaDB Master-Slave en CentOS / RHEL 7 y Debian 8/9

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

  1. Las copias de seguridad se pueden realizar en el servidor esclavo sin afectar (y verse afectado 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 maestro-esclavo en MariaDB 10.1 . A diferencia de la replicación clásica, MariaDB introdujo el concepto de ID de transacción global ( GTID ) en v10.0 , que permite cambiar un esclavo para conectarse y replicar fácilmente desde un maestro diferente. Además de eso, el estado del esclavo se registra de forma segura (las actualizaciones del estado se realizan en la misma transacción que las actualizaciones de los datos).

Instalación de MariaDB 10.1 en CentOS / RHEL 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

En CentOS / RHEL

Cree un archivo llamado MariaDB.repodentro de /etc/yum.repos.d con los siguientes contenidos en los sistemas Master y Slave :

# MariaDB 10.1 Lista de repositorios CentOS
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB baseurl = http://yum.mariadb.org/10.1/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1

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

# yum update && yum install MariaDB-server MariaDB-client

En Debian / Ubuntu

Agregue la clave para autenticar paquetes y el repositorio MariaDB:

# apt-get install software-properties-common
# apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db
# add-apt-repository 'deb [arch=amd64,i386] http://mirror.edatel.net.co/mariadb/repo/10.1/debian jessie main'

Nota : Reemplace el nombre de distribución y el nombre en clave en la línea resaltada arriba.

Instalar usando el comando apt-get :

# apt-get update
# apt-get install mariadb-server

Verifique la versión de MariaDB en tanto el el maestro como en el esclavo.

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

Configuración de una base de datos MySQL de muestra en Master

Ahora configuraremos en el servidor maestro la base de datos Employees de https://github.com/datacharmer/test_db (que proporciona un conjunto de datos de 4 millones de registros distribuidos en seis tablas) en dos simples pasos:

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

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

Configurar el servidor MySQL en Master

Para configurar el maestro, siga estos pasos:

PASO 1: Edite el archivo /etc/my.cnf. Debajo de la sección [mysqld], agregue las siguientes cuatro líneas:

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

y reiniciar MariaDB:

# systemctl restart mariadb

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

MariaDB [(none)]> CREATE USER 'slave'@'localhost' IDENTIFIED BY 'SlavePassword';
MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO slave IDENTIFIED BY 'SlavePassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
MariaDB [(none)]> SHOW MASTER STATUS;

El último comando ( SHOW MASTER STATUS ) devuelve la posición actual en el registro binario (las coordenadas exactas que indican exactamente en qué punto el esclavo debe comenzar a replicarse:

Configurar MySQL Master para la replicación

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

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

Una vez completado el volcado, conéctese nuevamente al servidor de la base de datos para desbloquear las tablas y luego salga:

MariaDB [(none)]> UNLOCK TABLES;
MariaDB [(none)]> exit;

PASO 4: Copie el volcado al esclavo:

# scp employees-dump.sql Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.:/root/ 

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

# mysql_upgrade -u root -p

PASO 6: Permita 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 --reload

Ahora configuremos el esclavo.




Configurar el servidor MySQL en esclavo

Para configurar el esclavo, siga estos pasos:

PASO 1: Cree la cuenta para realizar las tareas de replicación. Conéctese al servidor local MariaDB 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 [(none)]> CREATE DATABASE employees;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON employees.* TO 'slave'@'localhost' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;

PASO 3: Salga del indicador MariaDB y cargue el volcado creado en el servidor maestro:

# mysql -u root -p employees < employees-dump.sql

PASO 4: Edite el /etc/my.cnfarchivo para asignar una ID de servidor al esclavo en la [mysqld]sección. Tenga en cuenta que debe ser un número entero diferente a 1 , ya que usamos 1 en el maestro:

server_id=2
replicate-do-db=employees

Reinicie el servidor de la base de datos:

# systemctl restart mariadb

PASO 5: Ejecute el procedimiento mysql_upgrade para actualizar las tablas del sistema (se le pedirá que ingrese la contraseña raíz de MariaDB):

# mysql_upgrade -u root -p

PASO 6: Una vez que se ha importado el volcado al esclavo, solo hay unos pocos pasos para comenzar a replicar. Inicie sesión en la base de datos y ejecute los siguientes comandos en el indicador MariaDB. Preste especial atención a las variables MASTER_LOG_FILEy MASTER_LOG_POS, que deben coincidir con los valores devueltos por SHOW MASTER STATUS en el PASO 2 de "Configuración del maestro" anterior.

MariaDB [(none)]> CHANGE MASTER TO
  MASTER_HOST='192.168.0.18',
  MASTER_USER='slave',
  MASTER_PASSWORD='SlavePassword',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='master-bin.000001',
  MASTER_LOG_POS=314,
  MASTER_CONNECT_RETRY=10,
  MASTER_USE_GTID=current_pos;

PASO 7: Inicie el esclavo y verifique su estado sin salir del indicador MariaDB:

MariaDB [(none)]> START SLAVE;
MariaDB [(none)]> SHOW SLAVE STATUS\G;

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

MariaDB [(none)]> STOP SLAVE;

si el comando SHOW SLAVE STATUS\G; devuelve algún error. Use esos errores para solucionar problemas y luego ejecute START SLAVE; para probar nuevamente.

Probar la replicación de bases de datos MySQL / MariaDB

Agreguemos un registro a la tabla de empleados en el servidor maestro:

MariaDB [(none)]> INSERT INTO employees (emp_no, birth_date, first_name, last_name, gender, hire_date) VALUES (500000, '1983-07-12', 'Dave', 'Null', 'M', '2014-12-12');

Luego verifique que este cambio se haya replicado en el esclavo:

MariaDB [(none)]> USE employees;
MariaDB [(none)]> SELECT * FROM employees WHERE 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, explicamos cómo instalar la última versión de MariaDB en CentOS / RHEL 7 y Debian 8/9, y discutimos cómo configurar la replicación maestro-esclavo con GTID. Para obtener más información, puede consultar la Guía de replicación de MariaDB y no dude en ponerse en contacto con nosotros mediante el siguiente formulario si tiene preguntas o comentarios.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política