docker主从复制步骤(一主二从)
本文最后更新于97 天前,其中的信息可能已经过时,如有错误请发送邮件到3082654005@qq.com

首先在docker里创建三个容器master,slave01,slave02,并且分别映射到3308,3309,3310端口(在安全组里开放这些端口)

Linux> docker run –name master -p 3308:3306 -v /root/docker/volumes/etc/master/my.cnf:/etc/my.cnf -v /root/docker/volumes/etc/master/my.cnf.d:/etc/mysql/my.cnf.d -v /root/docker/volumes/etc/master/conf.d:/etc/mysql/conf.d -v /root/docker/volumes/var/lib/master:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=riCXT8zM -d mysql:latest

Linux> docker run –name slave01 -p 3309:3306 -v /root/docker/volumes/etc/slave01/my.cnf:/etc/my.cnf -v /root/docker/volumes/etc/slave01/my.cnf.d:/etc/mysql/my.cnf.d -v /root/docker/volumes/etc/slave01/conf.d:/etc/mysql/conf.d -v /root/docker/volumes/var/lib/slave01:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=riDYQ8zM -d mysql:latest

Linux> docker run –name slave02 -p 3310:3306 -v /root/docker/volumes/etc/slave02/my.cnf:/etc/my.cnf -v /root/docker/volumes/etc/slave02/my.cnf.d:/etc/mysql/my.cnf.d -v /root/docker/volumes/etc/slave02/conf.d:/etc/mysql/conf.d -v /root/docker/volumes/var/lib/slave02:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=riEZG8zM -d mysql:latest

从master容器中复制默认的my.cnf配置文件到宿主机的对应目录

从slave01容器中复制默认的my.cnf配置文件到宿主机的对应目录

从slave02容器中复制默认的my.cnf配置文件到宿主机的对应目录

    docker cp master:/etc/my.cnf /root/docker/volumes/etc/master/my.cnf
    docker cp slave01:/etc/my.cnf /root/docker/volumes/etc/master/my.cnf
    docker cp slave02:/etc/my.cnf /root/docker/volumes/etc/slave02/my.cnf

    接着我们要记住这三段命令,分别是进入主机,从一和从二容器的数据库
    (docker exec -it master mysql -uroot -priCXT8zM
    docker exec -it slave01 mysql -uroot -priDYQ8zM 从1
    docker exec -it slave02 mysql -uroot -priEZG8zM 丛2)


    1. 配置 slave01(第一个从服务器)

    bash

    docker exec -it slave01 /bin/bash
    • 进入 slave01 容器的交互式终端(/bin/bash)。

    bash

    cat /etc/mysql/my.cnf
    • 查看 my.cnf 文件内容,确认当前配置。

    bash

    sed -i '$a server_id=2' /etc/mysql/my.cnf
    • 使用 sed 在 my.cnf 文件末尾($a 表示 “append at end”)添加 server_id=2
    • -i 表示直接修改文件(而不是输出到终端)。

    bash

    docker restart slave01
    • 重启 slave01 容器,使 server_id 配置生效。

    sql(docker exec -it slave01 mysql -uroot -priDYQ8zM )

    mysql> show variables like 'server_id';

    进入 MySQL 命令行(假设已经运行 mysql -uroot -p),查询 server_id 的值,确认是否已设置为 2

    +—————+——-+
    | Variable_name | Value |
    +—————+——-+
    | server_id | 2 |
    +—————+——-+



    2. 配置 slave02(第二个从服务器)

    bash

    docker exec -it slave02 /bin/bash
    • 进入 slave02 容器的交互式终端。

    bash

    cat /etc/mysql/my.cnf
    • 查看 my.cnf 文件内容。

    bash

    sed -i '$a server_id=3' /etc/mysql/my.cnf
    • 在 my.cnf 文件末尾追加 server_id=3(确保 server_id 唯一,不能与 master 或 slave01 重复)。

    bash

    docker restart slave02
    • 重启 slave02 容器,使新配置生效。

    sql(docker exec -it slave02 mysql -uroot -priEZG8zM)

    mysql> show variables like 'server_id';

    进入 MySQL 命令行,检查 server_id 是否已设置为 3

    +—————+——-+
    | Variable_name | Value |
    +—————+——-+
    | server_id | 3 |
    +—————+——-+

    3.进入主服务器

    docker exec -it master mysql -uroot -priCXT8zM

    查看主服务配置mysql> show master status;

    回到从1,从二输入change master to
    master_port=3308,
    master_user=’root’,
    master_password=’riCXT8zM’,
    master_host=’121.41.121.147′,
    master_log_file=’binlog.000003′,
    master_log_pos=1054;

    这里的端口为主机端口,用户为主机用户,密码为主机密码,地址为云服务器公网地址,log_file和log_pos都是在主机上查看的配置。

    到这里mysql> start slave;启动服务

    查看是否配置成功?

    mysql> show slave status \G;

    此时如果是Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

    则成功,如果io是connecting,则接着操作

    停止服务,stop slave;

    进入主机执行

    ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘Master@123’;
    FLUSH PRIVILEGES; #这时候数据库密码都改成了Master@123

    再次进入主机的mysql查看配置

    docker exec -it master mysql -uroot -priCXT8zM#密码也可能是Master@123

    show master status;

    在从一从二中重新配置在启动服务即可

    文末附加内容
    暂无评论

    发送评论 编辑评论

    
    				
    |´・ω・)ノ
    ヾ(≧∇≦*)ゝ
    (☆ω☆)
    (╯‵□′)╯︵┴─┴
     ̄﹃ ̄
    (/ω\)
    ∠( ᐛ 」∠)_
    (๑•̀ㅁ•́ฅ)
    →_→
    ୧(๑•̀⌄•́๑)૭
    ٩(ˊᗜˋ*)و
    (ノ°ο°)ノ
    (´இ皿இ`)
    ⌇●﹏●⌇
    (ฅ´ω`ฅ)
    (╯°A°)╯︵○○○
    φ( ̄∇ ̄o)
    ヾ(´・ ・`。)ノ"
    ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
    (ó﹏ò。)
    Σ(っ °Д °;)っ
    ( ,,´・ω・)ノ"(´っω・`。)
    ╮(╯▽╰)╭
    o(*////▽////*)q
    >﹏<
    ( ๑´•ω•) "(ㆆᴗㆆ)
    😂
    😀
    😅
    😊
    🙂
    🙃
    😌
    😍
    😘
    😜
    😝
    😏
    😒
    🙄
    😳
    😡
    😔
    😫
    😱
    😭
    💩
    👻
    🙌
    🖕
    👍
    👫
    👬
    👭
    🌚
    🌝
    🙈
    💊
    😶
    🙏
    🍦
    🍉
    😣
    Source: github.com/k4yt3x/flowerhd
    颜文字
    Emoji
    小恐龙
    花!
    上一篇
    下一篇