docker-compose instalar mysql maestro-esclavo (varios servidores)

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

Supongo que te gusta

Origin blog.csdn.net/qq_37557563/article/details/115346144
Recomendado
Clasificación