Editado 4 hace días por ExtremeHow Equipo Editorial
DebianMySQLReplicaciónBase de datosConfiguración del servidorSQLLinuxCódigo abiertoAdministración de sistemasInterfaz de línea de comandos
Traducción actualizada 4 hace días
La replicación de MySQL es un proceso que te permite copiar automáticamente datos de un servidor de base de datos MySQL (maestro) a uno o más servidores de bases de datos MySQL (esclavos). Esta configuración es muy útil para mejorar el rendimiento, la fiabilidad y el equilibrio de carga. En esta guía, revisaremos los pasos necesarios para configurar la replicación de MySQL en un servidor Debian Linux. Cubriremos todo, desde la preparación del servidor, la configuración de los ajustes de replicación y la verificación de que la replicación funcione correctamente. Vamos a sumergirnos en ello.
La replicación de MySQL permite la copia asincrónica de datos entre servidores de bases de datos. El servidor principal se conoce como maestro, y todos los servidores secundarios que reciben datos replicados se llaman esclavos. Esta arquitectura es beneficiosa en muchos escenarios, como en entornos de bases de datos intensivos en lectura, procesos de respaldo y recuperación de datos, análisis de datos y centros de datos distribuidos geográficamente.
Antes de comenzar a configurar la Replicación de MySQL, asegúrate de tener los siguientes prerrequisitos en su lugar:
Comenzaremos configurando el servidor maestro, que contendrá los datos originales y enviará actualizaciones a los servidores esclavos.
Empieza abriendo el archivo de configuración de MySQL en el servidor maestro. Este archivo se encuentra normalmente en /etc/mysql/mysql.conf.d/mysqld.cnf
. Utiliza un editor de texto como nano
para editarlo:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Busca la sección [mysqld] en el archivo de configuración y modifica o añade las siguientes líneas:
[mysqld] log-bin = mysql-bin server-id = 1
La directiva log-bin
habilita el registro binario, que es necesario para la replicación ya que registra todos los cambios en la base de datos. server-id
debe ser un entero positivo único para cada servidor que participe en la configuración de replicación. En este caso, hemos utilizado 1
como el ID del servidor para el maestro.
Después de editar, guarda y cierra el archivo. Si utilizaste nano, puedes hacerlo presionando CTRL + X
, luego Y
y luego ENTER
.
Para aplicar los cambios que hicimos, reinicia el servicio MySQL:
sudo systemctl restart mysql
A continuación, inicia sesión en la línea de comandos de MySQL en el servidor maestro para crear una cuenta de usuario que el servidor esclavo pueda utilizar para conectarse para replicación. Usa el siguiente comando:
mysql -u root -p
Después de iniciar sesión, ejecuta los siguientes comandos SQL para crear un usuario de replicación y otorgarle privilegios. Sustituye 'replica_user'
y 'password'
por el nombre de usuario y contraseña de tu elección:
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%'; FLUSH PRIVILEGES;
Estos comandos crean un nuevo usuario de MySQL con privilegios de replicación. El uso de '%'
como el host permite que el esclavo se conecte desde cualquier dirección IP.
Antes de proceder a configurar el esclavo, necesitas registrar el archivo de registro actual del maestro y el estado. Usa el siguiente comando para obtener esta información:
SHOW MASTER STATUS;
Anota los valores de File
y Position
, ya que serán necesarios al configurar el servidor esclavo. La salida puede verse algo así:
+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 123 | | | +------------------+----------+--------------+------------------+
Después de configurar el servidor maestro, el siguiente paso es configurar los servidores esclavos.
Al igual que con la configuración del maestro, abre la configuración de MySQL en cada servidor esclavo editando /etc/mysql/mysql.conf.d/mysqld.cnf
:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Asegúrate de que la sección [mysqld] tenga los siguientes ajustes:
[mysqld] server-id = 2 relay-log = mysql-relay-bin
server-id
debe ser único y diferente de cualquier otro servidor en la configuración de replicación. Aquí, hemos utilizado 2
. La configuración relay-log
facilita el procesamiento del flujo de replicación del servidor maestro.
Después de editar, guarda y cierra el archivo de configuración como antes.
Reinicia el servidor MySQL en el Esclavo para aplicar los cambios:
sudo systemctl restart mysql
Inicia sesión en el cliente de línea de comandos de MySQL en el servidor esclavo:
mysql -u root -p
Después de iniciar sesión, conecta el esclavo al maestro usando el comando CHANGE MASTER TO
. Asegúrate de reemplazar 'master_host'
, 'replica_user'
, 'password'
, 'mysql-bin.X'
y position_number
con la dirección IP del servidor maestro correspondiente, nombre de usuario del réplica, contraseña, archivo de registro y posición obtenidos anteriormente:
CHANGE MASTER TO MASTER_HOST = 'master_host', MASTER_USER = 'replica_user', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.X', MASTER_LOG_POS = position_number;
Después de configurar la información del maestro, inicia el proceso de esclavo con el siguiente comando:
START SLAVE;
Para comprobar si el servidor esclavo está configurado correctamente y conectado al maestro, ejecuta:
SHOW SLAVE STATUS\G;
Mira los campos Slave_IO_Running
y Slave_SQL_Running
en la salida. Ambos deben mostrar Yes
para indicar que el esclavo está funcionando correctamente. También debes observar los valores de Relay_Master_Log_File
y Exec_Master_Log_Pos
, que confirman el progreso de la replicación.
Una vez que hayas configurado tanto los servidores maestro como esclavo, es una buena práctica probar la configuración de replicación para asegurarte de que todo funcione como se espera.
Para probar la replicación, intenta insertar una entrada de datos simple en el servidor Maestro y verifica si aparece en el Esclavo.
En el servidor maestro, inicia sesión en MySQL y crea una base de datos y una tabla simple:
mysql -u root -p
CREATE DATABASE testdb; USE testdb; CREATE TABLE testtable (id INT PRIMARY KEY AUTO_INCREMENT, value VARCHAR(255)); INSERT INTO testtable (value) VALUES ('Replication Test');
Inicia sesión en la línea de comandos de MySQL en el servidor esclavo y verifica si los datos se han replicado:
mysql -u root -p
USE testdb; SELECT * FROM testtable;
Debes ver la fila insertada en la tabla maestra ahora presente en la tabla esclava. Si la replicación está funcionando correctamente, verás:
+----+------------------+ | id | value | +----+------------------+ | 1 | Replication Test | +----+------------------+
En caso de que surjan problemas durante o después de la configuración, aquí hay algunos pasos generales de solución de problemas que puedes considerar:
ping
o telnet
).La replicación de MySQL en Debian, como se demostró, implica configurar tanto servidores maestro como esclavo para manejar y reproducir cambios de base de datos a través de múltiples sistemas. Esta configuración puede aumentar significativamente la fiabilidad y la eficiencia del acceso a los datos. Mientras que la configuración de replicación requiere algo de esfuerzo y comprensión de la arquitectura de la base de datos, seguir estas instrucciones debería hacer que el proceso sea manejable y exitoso.
Ten en cuenta que siempre es una buena idea monitorear regularmente tu servidor MySQL y realizar verificaciones periódicas de consistencia y rendimiento en tus datos replicados para asegurarte de que tus sistemas funcionen sin problemas y eficientemente.
Si encuentras algo incorrecto en el contenido del artículo, puedes