Replicação do MySQL
1️⃣ Para começar, vamos criar o Docker compose que inicia dois containers: um como mestre e outro como réplica (slave).
name: replicacao
services:
db-master:
image: mysql:8.1
container_name: mysql-master
command: --server-id=1 --log-bin=myqsl-bin --binglog-format=row
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: replicador
MYSQL_PASSWORD: replicador
ports:
- "3306:3306"
db-slave:
image: mysql:8.1
container_name: mysql-slave
command: --server-id=2 --log-bin=myqsl-bin --binglog-format=row
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: replicador
MYSQL_PASSWORD: replicador
ports:
- "3305:3305"
docker-compose up -d
Configurar o mestre
docker exec -it mysql-principal bash
mysql -uroot -p
ALTER USER 'replicador'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'replicador';
GRANT REPLICATION SLAVE ON *.* TO 'replicador'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;
Aqui, precisamos acompanhar o status de saída:
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 | 838 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
Ajustando a réplica
docker exec -it mysql-replica bash
mysql -uroot -p
CHANGE MASTER TO
MASTER_HOST='mysql-principal',
MASTER_USER='replicador',
MASTER_PASSWORD='replicador',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=838;
START SLAVE;
SHOW SLAVE STATUS\G
Nesta página