最新公告
  • 新注册用户请前往个人中心绑定邮箱以便接收相关凭证邮件!!!点击前往个人中心
  • 使用Docker完成MYSQL主从复制

    不过很多小伙伴反映在 Linux 中安装 MySQL 比较费劲,弄错了想从头开始都难,因此今天就来和大家分享一下如何通过 Docker 快速搭建 MySQL 主从复制。

    主从规划

    首先规划两个 MySQL 实例:
    • 192.168.66.131:33061/主机
    • 192.168.66.131:33062/从机
    当然大家可以准备多个从机,从机的配置步骤是一样的。
    在 Docker 中创建两个 MySQL 实例的命令如下:
    docker run –name mysql1 -p 33061:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7 –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci
    docker run –name mysql2 -p 33062:3306 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7 –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci
    创建完成后,通过 docker ps 命令可以查看 MySQL 实例的运行情况:
    如此,表示 MySQL 实例已经在运行了。使用 Docker 配置 MySQL 主从最方便的莫过于配错了可以非常方便的从头开始。
    接下来,我们就开始主从的配置。

    配置主机

    主机上的配置,主要是两个地方:
    • 第一个是配置一个从机登录用户
    • 第二个配置开启 binlog。
    Docker 中创建的 MySQL 实例,默认只有一个用户,就是 root,这里我们需要进入到 MySQL 命令行,再给它分配一个用户。在宿主机中通过如下命令连接上主机:
    mysql -u root -h 192.168.66.131 -P 33061 -p
    输入密码后,进入到主机的命令行。然后给从机分配用户(因为我的宿主机上也安装了 MySQL,所以可以直接执行 mysql 命令,如果宿主机没有安装 MySQL,建议通过 docker exec 进入到 MySQL 容器中,然后执行如下命令):
    GRANT REPLICATION SLAVE ON *.* to ‘rep1’@’%’ identified by ‘123’;
    这个表示从机一会使用 rep1/123 来登录主机,% 表示这个账户可以从任意地址登录,也可以给一个固定的 IP,表示这个账户只能从某一个 IP 登录。
    接下来开启 binlog。
    binlog 的开启,需要修改 MySQL 的配置,因此,我们需要进入到容器内部去执行。
    首先进入到容器内部:
    docker exec -it mysql1 /bin/bash
    然后找到 MySQL 配置文件的位置:
    /etc/mysql/mysql.conf.d/mysqld.cnf
    这就是 MySQL 的配置文件。我们要在这里进行修改操作。因为 MySQL 容器中,默认没有 VI 编辑器,安装费事,所以我们可以在宿主机中将配置文件写好,然后拷贝到 MySQL 容器中,覆盖原有配置。我们主要在该配置文件中添加如下内容:
    log-bin=/var/lib/mysql/binlog
    server-id=1
    binlog-do-db = cmdb
    • 第一行表示配置 binlog 的位置,理论上 binlog 可以放在任意位置,但是该位置,MySQL 一定要有操作权限。
    • server-id 表示集群中,每个实例的唯一标识符。
    • bindlog-do-db 表示要同步的数据库有哪些。当从机连上主机后,并不是主机中的每一个库都要同步,这里表示配置哪些库需要同步。
    配置完成后,保存退出。
    接下来执行命令,将宿主机中的 mysqld.cnf 拷贝到容器中:
    docker cp ./mysqld.cnf mysql1:/etc/mysql/mysql.conf.d/
    拷贝完成后,重启容器。
    docker restart mysql1
    容器重启完成后,进入到主机的命令行中,查看配置是否成功:
    File 和 Position 需要记着,这两个标记了二进制日志的起点位置,在从机的配置中将使用到这两个参数。
    至此,主机的配置就算完成了。

    配置从机

    从机的配置比较简单,不用开启 binlog,也不用配置要同步的库,只需要在配置文件中,添加一个 server-id 即可。
    这是从机的 mysqld.cnf 配置:
    配置完成后,一样拷贝到容器中。拷贝方式和主机一样:
    docker cp ./mysqld.cnf mysql2:/etc/mysql/mysql.conf.d/
    配置完成后,重启从机容器:
    docker restart mysql2
    重启完成后,进入到 mysql2 的命令行,执行如下命令,开启数据同步:
    change master to master_host=’192.168.66.131′,master_port=33061,master_user=’rep1′,master_password=’123′,master_log_file=’binlog.000001′,master_log_pos=154;
    配置完成后,开启从机进程。在从机命令行执行如下命令:
    start slave;
    接下来,执行 show slave statusG;查看从机状态:
    这里重点查看 Slave_IO_Running 和 Slave_SQL_Running ,这两个的值必须为 Yes。如果有一个的值不为 Yes,表示配置失败,一般情况下,配置失败,下面会有失败提示。
    至此,我们的 MySQL 主从就算是配置成功了。

    检验

    配置成功之后,我们可以通过 Navicat 或者 SQLyog 等工具连接上我们的两个 MySQL 实例,然后在主机中创建一个名为 db1 的库,你会发现从机中也会自动同步这个库。
    OK,本文就说这么多,有问题欢迎大家留言讨论。
    本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
    极客文库 » 使用Docker完成MYSQL主从复制

    常见问题FAQ

    如果资源链接失效了怎么办?
    本站用户分享的所有资源都有自动备份机制,如果资源链接失效,请联系本站客服QQ:2580505920更新资源地址。
    如果用户分享的资源与描述不符怎么办?
    可以联系客服QQ:2580505920,如果要求合理可以安排退款或者退赞助积分。
    如何分享个人资源获取赞助积分或其他奖励?
    本站用户可以分享自己的资源,但是必须保证资源没有侵权行为。点击个人中心,根据操作填写并上传即可。资源所获收益完全归属上传者,每周可申请提现一次。
    如果您发现了本资源有侵权行为怎么办?
    及时联系客服QQ:2580505920,核实予以删除。

    参与讨论

    • 172会员总数(位)
    • 3737资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 480稳定运行(天)

    欢迎加入「极客文库」,成为原创作者从这里开始!

    立即加入 了解更多
    成为赞助用户享有更多特权立即升级