docker部署mysql主从复制

主从搭建


1.启动主从MySQL容器

#启动主机器

docker run -p 3306:3306 -v /my/mysql/master/config:/etc/mysql/conf.d -v/my/mysql/master/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 --name masterMysql --privileged=true --restart=always -d mysql:8.0.31

#启动从机器
docker run -p 3307:3306 -v /my/mysql/slave1/config:/etc/mysql/conf.d -v/my/mysql/slave1/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 --name slaveMysql1 --privileged=true --restart=always -d mysql:8.0.31

   注释:

            -p 容器暴露给外部调用的端口 :容器内部自己端口
            -v 挂载容器配置到宿主机,和容器内部文件一一映射。
                格式为 自定义宿主机路径 :容器内部文件路径
                效果为 修改宿主机文件,容器内部文件也会里面跟着修改生效
           -e 参数值配置
           --name 容器名称
           --privileged=true 给容器加上特定权限, 允许访问容器内部资源
          --restart=always 参数能够使我们在重启docker时,自动启动相关容器
                 Docker容器的重启策略如下:
                        no,默认策略,在容器退出时不重启容器
                        on-failure,在容器非正常退出时(退出状态非0),才会重启容器
                        on-failure:3,在容器非正常退出时重启容器,最多重启3次
                        always,在容器退出时总是重启容器
                         unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
        -d 容器后台运行  
            注释: docker对参数有严格要求,这个参数最好放最后

2.主从配置文件配置

  1.主库配置


    cd /my/mysql/master/config
    vim my.cnf
    [mysqld]
    #修改配置文件:vim /etc/my.cnf
    #主服务器唯一ID
    server-id=1
    #启用二进制日志
    log-bin=master-mysql-bin
    # 设置不要复制的数据库(可设置多个)
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    #设置需要复制的数据库 需要复制的主数据库名字
    binlog-do-db=testdb
    #设置logbin格式
    binlog_format=STATEMENT


   2.从库配置


    cd /my/mysql/slave1/config
    [mysqld]
    #从服务器唯一ID
    server-id=2
    #启用中继日志
    relay-log=slave1-mysql-relay


   3.重启主从机器


    docker restart 主容器id 从容器id


3.搭建主从复制

(这里只是搭建一个从服务器,多个相同方法搭建即可)


  1.主机给从机授权


    进入从机mysql,执行
        -- 创建slave1用户
        CREATE USER 'slave1'@'%';
        -- 设置密码
        ALTER USER 'slave1'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
        -- 授予复制权限
        GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'%';
        -- 刷新权限
        FLUSH PRIVILEGES;


  2.查询master的状态

进入从机mysql,执行
         show master status; 
         得到binlog日志文件以及日志位置 
           日志文件 master-mysql-bin.000001 
           日志位置 157


  3.从机连接主机
    1.从机配置

    CHANGE MASTER TO MASTER_HOST='172.17.0.2',
    MASTER_USER='slave1',
    MASTER_PASSWORD='123456',
    MASTER_PORT=3306, 
    MASTER_LOG_FILE='master-mysql-bin.000001',MASTER_LOG_POS=157;


    #解释:
    #     CHANGE MASTER TO MASTER_HOST='主机的IP地址',
    #        注释:列出docker所有容器id
    #              docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' \ $(docker ps -aq)
    #    MASTER_USER='slave1'(刚刚配置的用户名),
    #    MASTER_PASSWORD='123456'(刚刚授权的密码),
    #    master_port=主机开放的端口 我这里是3306端口,
    #    MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值(之前的Position);


    2.启动主从复制


      进入从机mysql,执行
        1.START SLAVE;
        -- 查看状态(不需要分号)
        2.SHOW SLAVE STATUS\G
           查看到如下说明主从配置成功
                  Slave_IO_Running: Yes
                  Slave_SQL_Running: Yes

4.验证

   主机器创建修改删除数据库,从库跟着创建修改删除数据库
   

5.资料参考

  Docker安装 Mysql主从同步 - 掘金

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值