利用Docker,轻松搞定MySQL主从复制

前言

最近有小伙伴反映在Linux中搭建MySQL的主从环境比较费劲,今天给大家介绍如何利用Docker快速搭建MySQL的主从复制。

关于docker

关于docker的介绍,这里就不多说了,在我们之前的文章中有介绍过docker,有兴趣的朋友可以到公众号中查看docker系列文章中了解更多的docker知识。

Mysql主从搭建规划

首先我们规划二个实例:

  • 192.168.88.100:33061/主机
  • 192.168.88.101:33062/从机

也可以准备多个从机,接下来我们在docker中执行命名:

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主机配置

在mysql主机的配置有

  • 配置一个从机登录的用户名。

    在docker的创建的时候,docker默认给mysql创建了一个root的用户。现在我们连接到mysql并分配一个用户。

    docker exec -it mysql1 /bin/bash
    mysql -uroot -p
    

    输入密码后,然后给从机分配用户,执行如下命令分配用户。

    GRANT REPLICATION SLAVE ON *.* to 'user1'@'%' identified by '123';
    

    这个表示从机一会使用 user1/123 来登录主机,% 表示这个账户可以从任意地址登录,也可以给一个固定的 IP,表示这个账户只能从某一个 IP 登录。

  • 配置开启binlog。

    binlog的开启,我们需要修改 MySQL的配置,首先我们进入到容器内部去执行。

    docker exec -it mysql1 /bin/bash
    

    然后找到 MySQL 配置文件的位置:

    /etc/mysql/mysql.conf.d/mysqld.cnf
    

    在配置文件中添加如下内容

    log-bin=/var/lib/mysql/binlog
    server-id=1
    binlog-do-db = cmdb
    binlog-do-db = db1
    binlog-do-db = db2
    binlog-do-db = db3
    
    • 第一行表示配置 binlog的位置,你也可以吧 binlog放在任意位置,但是该位置,MySQL 一定要有操作权限。
    • server-id 表示集群中,每个实例的唯一标识符。
    • bindlog-do-db 表示要同步的数据库有哪些。当从机连上主机后,并不是主机中的每一个库都要同步,这里表示配置哪些库需要同步。

    配置保存之后,重启容器。再进入在主机登录数据库,执行如下命令看是否配置成功:

    img

    File 和 Position这两个标记了二进制日志的起点位置,在从机的配置中将使用到这两个参数。因此我们先要记着。

    到这里,主机的配置就算完成了。

从机配置

从机的配置相对来说比较简单,只需要在配置文件中添加一个server-id就可以了。

img

配置完成后,重启从机容器。

docker restart mysql2

重启完成后,进入到 mysql2 的命令行,执行如下命令,开启数据同步

change master to master_host='192.168.88.100',master_port=33061,master_user='user1',master_password='123',master_log_file='binlog.000001',master_log_pos=154;

开启完成后,开启从机进程。在从机命令行执行如下命令:

start slave;

接下来,执行 show slave status\G;查看从机状态:

img

这里重点查看 Slave_IO_Running 和 Slave_SQL_Running ,这两个的值必须为 Yes。如果有一个的值不为 Yes,表示配置失败,一般情况下,配置失败,下面会有失败提示。

到这里,我们的 MySQL 主从就算是配置成功了

校验

配置成功之后,我们可以通过 Navicat工具连接上我们的两个 MySQL 实例,然后在主机中创建一个名为 db1 的库,你会发现从机中也会自动同步这个库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值