LinuxParty
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.
Entre otros beneficios de la replicación de bases de datos en una configuración maestro-esclavo podemos mencionar:
- Las copias de seguridad se pueden realizar en el servidor esclavo sin afectar (y verse afectado por) las operaciones de escritura en el maestro.
- 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.repo
dentro 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
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:
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.cnf
archivo 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_FILE
y 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;
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.
-
Bases de Datos
- Cómo hacer copias de seguridad y restaurar MySQL/MariaDB y PostgreSQL con las herramientas 'Automysqlbackup' y 'Autopostgresqlbackup'
- La última versión de MySQL es decepcionante, dicen algunos expertos en bases de datos
- Cómo instalar MongoDB en AlmaLinux 9 con ejemplos de uso
- Cómo instalar PostgreSQL 16 en distribuciones basadas en RHEL, AlmaLinux, RockyLinux y Fedora
- Cómo instalar PhpMyAdmin con Apache en sistemas RHEL, Alma Linux, Rocky Linux, Centos y Fedora
- Cómo hacer una copia de seguridad y restaurar una base de datos PostgreSQL en Linux
- Cómo instalar phpPgAdmin y PostgreSQL en CentOS, AlmaLinux, RHEL, RockyLinux y similares
- 20 comandos mysqladmin para la administración de bases de datos MYSQL/MariaDB
- Copiar y restaurar copias de seguridad de MySQL / MariaDB para la administración de bases de datos
- Crear Copias de Seguridad (Backups) de MariaDB o MySQL Automáticas con AutoMySQLBackup
- Grafana, software para análisis y supervisión
- Cómo configurar la replicación MariaDB (Maestro-Esclavo) en CentOS / RHEL y Debian
- Arrancar al inicio MySQL / MariaDB con Linux.
- Conocer que IPs están conectados a MySQL haciendo consultas a la base de datos.
- MariaDB, guía práctica para Administradores Linux