sql >> Base de Datos >  >> RDS >> MariaDB

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

Incluso cuando algunas personas de TI escuchan la frase "Replicación de bases de datos “, a menudo lo asocian con la necesidad de tener varias 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 hasta cierto punto, 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 la disponibilidad de los datos.

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 hacer en el servidor esclavo sin afectar (y verse afectado por) las operaciones de escritura en el maestro.
  2. Las operaciones que consumen muchos 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 transacciones globales (GTID ) en v10.0 , que permite cambiar un esclavo para conectarse y replicarse desde un maestro diferente fácilmente. 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).

Si está buscando MySQL replicación bajo CentOS/RHEL 6 , siga esta guía Configure la replicación de 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 ):

Master: 192.168.0.18
Slave: 192.168.0.19

Para instalar la última versión de MariaDB, necesitaremos agregar sus repositorios a nuestros servidores. Si está utilizando una versión anterior de MariaDB, digamos 5.5, considere actualizar a la última versión 10.1 usando el siguiente artículo.

  1. Actualizar MariaDB 5.5 a MariaDB 10.1

En CentOS/RHEL

Cree un archivo llamado MariaDB.repo dentro de /etc/yum.repos.d con los siguientes contenidos tanto en Master y Esclavo sistemas:

# MariaDB 10.1 CentOS repository list - created 2016-01-23 14:16 UTC
# 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 de 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 :Reemplazar distribución nombre y nombre en clave en la línea resaltada arriba.

Instalar usando apt-get comando:

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

Una vez que haya instalado MariaDB, ejecute mysql_secure_installation procedimiento tanto en el 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 los Employees 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 sencillos pasos:

Clone el repositorio y utilícelo 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

Configuración del servidor MySQL en maestro

Para configurar el maestro, siga estos pasos:

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

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

y reinicie MariaDB:

# systemctl restart mariadb

PASO 2: Inicie sesión en el servidor MariaDB como raíz, cree el esclavo de usuario y asigne las concesiones 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 (MOSTRAR ESTADO DEL MAESTRO ) devuelve la posición actual en el registro binario (las coordenadas exactas que indican exactamente desde qué punto el esclavo debe comenzar a replicar:

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

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

Después de completar el volcado, vuelva a conectarse 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 [email protected]:/root/ 

PASO 5: Ejecute mysql_upgrade procedimiento 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: 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 vamos a configurar el esclavo.

Configuración del 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 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 los 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 de MariaDB y cargue el volcado creado en el servidor maestro:

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

PASO 4: Edite el /etc/my.cnf archivo para asignar un servidor ID al esclavo bajo el [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 mysql_upgrade procedimiento 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 el volcado se ha importado al esclavo, solo nos quedan unos pocos pasos para comenzar a replicar. Inicie sesión en la base de datos y ejecute los siguientes comandos en el indicador de MariaDB. Preste especial atención al MASTER_LOG_FILE y MASTER_LOG_POS variables, que deben coincidir con los valores devueltos por MOSTRAR ESTADO DEL MAESTRO 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 de MariaDB:

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

No es que necesites esto ahora, pero ten en cuenta que puedes detener al esclavo con:

MariaDB [(none)]> STOP SLAVE;

si SHOW SLAVE STATUS\G; El comando devuelve cualquier error. Use esos errores para solucionar problemas y luego ejecute START SLAVE; para probar de nuevo.

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

Agreguemos un registro a los empleados tabla 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 fue replicado en el esclavo:

MariaDB [(none)]> USE employees;
MariaDB [(none)]> SELECT * FROM employees WHERE emp_no=500000;

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 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.