docker配置Mysql主从同步

容器让开发更为简单!
在正式写之前,我们首先要清楚:容器中的mysql配置文件跟数据库文件要放在宿主机。

本文使用的是docker-compose来实例化两个mysql服务。
先贴代码:

version: "3.8"

services:
  adminer:
    image: adminer:4.8.1-standalone
    ports:
    - 8080:8080
    depends_on:
      - mysql1
      - mysql2
    networks:
      tsql:
        ipv4_address: 192.168.6.2


  mysql1:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - /work/sqltest/m1:/etc/mysql/
    networks:
      tsql:
        ipv4_address: 192.168.6.3
  mysql2:
    image: mysql:8.0
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - /work/sqltest/m2:/etc/mysql/
    networks:
      tsql:
        ipv4_address: 192.168.6.4

networks:
  tsql:
    ipam:
      config:
        - subnet: 192.168.6.0/24
          gateway: 192.168.6.1

步骤:

一:copy mysql容器中的配置文件到本地

由于是用docker-compose直接启动容器,所以我们在第一次docker-compose up启动的时候,上面的代码中的volumes配置需先注释,因为还没有配置,所以不注释会报错(由于是测试,db数据没有volumes)。
在启动之后cp两份mysql的配置文件:

docker cp 容器id:/etc/mysql 本地目录

二:修改配置文件

修改充当主库跟充当从库的配置文件的共同之处在于:

都需要增加:server-id参数,但是它们的值不能重复,如主库设置:

server-id=1
从库设置:
server-id=2
主库比从库额外多的动作是需要开启二进制日志:
log-bin=mysql-bin

//主库my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1

//从库my.cnf
[mysqld]
server-id=2

修改完配置文件之后一定要记得重启!!

由于本文是docker-compose,所以直接restart就好。

三:在从库上配置主库的信息

配置信息跟windows版都是一样的,有需要可以查看:windows主从。
代码:

CHANGE MASTER TO  
MASTER_HOST='127.0.0.1', #这里是主库的ip  
MASTER_PORT=3306, #这里是主库的端口,从库的端口可以和主库不同  
MASTER_USER='root', #这里是主库上建立的用于复制的用户rpo  
MASTER_PASSWORD='111111', ##这里是root用户的密码  
MASTER_LOG_FILE='LAPTOP-CFDLNI4D-bin.000003', ###这里是show master status时查看到的二进制日志文件名称,注意不能多空格  
MASTER_LOG_POS=0; ##这里是show master status时查看到的二进制日志文件偏移量,注意不能多空格 

配置完之后,需要开启主从同步

四:在从库上开启主从同步

start slave;

执行完可以使用show slave status;命令查看是否主从成功!如果遇到1236问题请看这篇文章

你可能感兴趣的:(MySQL实战,docker,mysql,linux,数据库,主从)