Haga clic para instalar docker y docker-compose
1. Prepare dos servidores 192.168.0.11 (maestro) 192.168.0.12 (esclavo)
Configurar el host mysql
Estructura de directorios
192.168.0.11 (principal) instale mysql para crear el archivo docker-compose.yml de mysql
version: '3' services: mysql: image: mysql restart: always container_name: mysql_master environment: MYSQL_ROOT_PASSWORD: 123456 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M; ports: - 13306:3306 volumes: - /root/docker-compose-service/mysql/data:/var/lib/mysql - /root/docker-compose-service/mysql/conf.d:/etc/mysql/conf.d - /etc/localtime:/etc/localtime:ro
Cree el archivo mysql.cnf en la carpeta conf.d
[mysqld] log-bin = mysql-bin server-id = 999
Inicie el contenedor mysql docker-compose up -d
Ver contenedor docker ps
Explique que el contenedor está iniciado, ingrese al contenedor para ver el estado del nodo maestro
# 进入容器 docker exec -it mysql_master /bin/bash
# 链接mysql mysql -uroot -p #输入密码 # 指定ip mysql>GRANT REPLICATION SLAVE ON *.* TO 'root'@'192.168.0.11' IDENTIFIED BY '123456'; # 所有ip mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by '123456';
Luego vea el estado de la base de datos del contenedor principal
mysql> show master status;
Registre el archivo y la posición aquí, debe usarlo cuando configure el esclavo más tarde
Configurar el esclavo mysql La estructura del directorio es la misma que la del host
El docker-compose.yml de mysql no es lo mismo que mysql.cnf
docker-compose.yml
version: '3' services: mysql: image: mysql restart: always container_name: mysql_slave environment: MYSQL_ROOT_PASSWORD: 123456 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M; ports: - 13306:3306 volumes: - /root/docker-compose-service/mysql/data:/var/lib/mysql - /root/docker-compose-service/mysql/conf.d:/etc/mysql/conf.d - /etc/localtime:/etc/localtime:ro
mysql.cnf
[mysqld] log-bin = mysql-bin server-id = 1
Inicie el contenedor mysql docker-compose up -d
Ver contenedor docker ps
En el contenedor de esclavos
docker exec -it mysql_slave /bin/bash # 链接mysql mysql -uroot -p #输入密码
# 配置链接的主机参数 mysql> change master to -> master_host='192.168.0.11', -> master_user='root', -> master_log_file='mysql-bin.000002', -> master_log_pos=156, -> master_port=3306, -> master_password='123456'; # master_host:主机的ip # master_user:主机用户名 # master_log_file:记录的File地址 # master_log_pos:记录的postion地址 # master_port:主机的端口 # master_password:主机的登录密码
# 启动slave mysql> start slave; # 查看主从链接状态 mysql> show slave status;
Inicie mysql docker-compose up -d desde la biblioteca
Navicat conecta la biblioteca principal y la biblioteca esclava
Al ejecutar sql desde la biblioteca, si aparecen dos sí, está bien.
Agregue una base de datos a la biblioteca principal, inserte un registro para ver si hay datos en la biblioteca, si es así, todo está bien