docker配置mysql主从复制

docker配置mysql主从复制

主库

  • 拉取镜像

    • docker pull mysql

  • 查看镜像

    • docker images

  • 创建主从配置文件目录

    • mkdir /data/docker/mysql/{master,slave} -pv

  • 配置主配置文件

    • vi /data/docker/mysql/master/my.cnf

    • [mysqld]
      server-id=1
      log-bin=master-bin
      log-bin-index=master-bin.index
      default-authentication-plugin=mysql_native_password
  • 创建主数据文件

    • mkdir /data/docker/mysql/master/data

  • 启动主库实例

    • docker run -d -e MYSQL_ROOT_PASSWORD=root --name mysql-master -v /data/docker/mysql/master/data:/var/lib/mysql -v /data/docker/mysql/master/my.cnf:/etc/my.cnf -p 3316:3306 mysql
  • 进入主库

    • 先进入到容器 docker exec -it mysql-master /bin/bash

    • mysql -uroot -proot

  • 检查配置是否成功

    • show variables like '%server_id%' 得到相应的server_id表示配置成功

  • 查看对应的同步文件

    • show master status

 


从库

  • 配置从配置文件

    • vi /data/docker/mysql/slave/my.cnf

    • [mysqld]
      server-id=2
      skip-slave-start=true
      read_only=ON
      relay-log=relay-bin
      relay-log-index=relay-bin.index
      default-authentication-plugin=mysql_native_password
  • 创建从数据文件

    • mkdir /data/docker/mysql/slave/data

  • 启动从库实例

    • docker run -d -e MYSQL_ROOT_PASSWORD=root --name mysql-slave -v /data/docker/mysql/slave/data:/var/lib/mysql -v /data/docker/mysql/slave/my.cnf:/etc/my.cnf -p 3326:3306 mysql
  • 进入主库

    • 先进入到容器 docker exec -it mysql-master /bin/bash

    • mysql -uroot -proot

  • 检查配置是否成功

    • show variables like '%server_id%' 得到相应的server_id表示配置成功

  • 配置从库同步主库

    • change master to master_host='192.168.1.22',master_user='root',master_password='root', master_log_file='master-bin.000003',master_log_pos=155,master_port=3316;
       
    • 注意 master_log_file为主库的最新日志,master_log_pos 最后的执行点,可以通过在主库执行show master status 来查看

  • 开始同步

    • start slave

  • 检查同步配置

    • show slave status \G

    • 注意 Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,才表示状态正常。

    •  

猜你喜欢

转载自www.cnblogs.com/AlanH/p/10333790.html
今日推荐