El servidor esclavo necesita conectarse al maestro para leer el registro binario (binary log). Por seguridad, la mejor práctica es crear una cuenta de usuario dedicada para este propósito con privilegios limitados. En este paso, creará un usuario de replicación y poblará la base de datos de prueba para observar la replicación en acción.
-
Conectarse al Servidor Maestro:
Abra una shell de MySQL dentro del contenedor mysql-master.
docker exec -it mysql-master mysql -uroot -plab_password
-
Crear un Usuario de Replicación:
En el prompt mysql>, ejecute el siguiente comando para crear un usuario llamado repl_user con la contraseña repl_password. Este usuario será utilizado por el esclavo para conectarse. Usamos '@'%' para permitir que el usuario se conecte desde cualquier host, lo que incluye nuestro contenedor esclavo en la red Docker.
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_password';
-
Otorgar Privilegios de Replicación:
El nuevo usuario necesita el privilegio REPLICATION SLAVE, que le permite leer los registros binarios (binary logs) del maestro.
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
Después de otorgar los privilegios, recargue las tablas de concesión (grant tables) para aplicar los cambios inmediatamente.
FLUSH PRIVILEGES;
-
Verificar el Estado del Registro Binario del Maestro:
Antes de configurar el esclavo, necesita conocer las coordenadas exactas en el registro binario del maestro donde el esclavo debe comenzar a replicar. El comando SHOW MASTER STATUS proporciona esta información.
SHOW MASTER STATUS;
La salida será similar a esta. Anote los valores de File y Position, ya que los necesitará en el siguiente paso.
+------------------+----------+------------------+--------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+------------------+--------------------+-------------------+
| mysql-bin.000001 | 337 | replication_db | | |
+------------------+----------+------------------+--------------------+-------------------+
1 row in set (0.00 sec)
-
Crear una Tabla de Prueba y Datos:
La base de datos replication_db se creó cuando se inició el contenedor. Creemos una tabla e insertemos algunos datos para probar la replicación.
USE replication_db;
CREATE TABLE messages (
id INT PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(255)
);
INSERT INTO messages (content) VALUES ('Hello from the master!');
Puede verificar que los datos se insertaron correctamente.
SELECT * FROM messages;
Debería ver la fila que acaba de insertar.
+----+------------------------+
| id | content |
+----+------------------------+
| 1 | Hello from the master! |
+----+------------------------+
1 row in set (0.00 sec)
Ahora, salga de la shell de MySQL.
exit;
Ahora ha preparado el servidor maestro creando un usuario de replicación y algunos datos de prueba.