详解用Docker构建MySQL主从环境

2025-05-27 0 36

前言

本篇文章记录我使用 docker-compose 以及 dockerfile 来构建基于 binlog 的 mysql 主从环境。如果你严格按照文中的步骤进行配置,相信很快就可以搭建好一个基础的 mysql 主从环境。

介绍

详解用Docker构建MySQL主从环境

mysql 主从同步分为 3 个步骤:

  • master 节点将数据的更新记录写到 binary log 中。
  • slave 节点开启 io 线程连接 master 节点,请求获取指定 binary log 文件的指定位置之后的日志。
  • master 节点的 binary log dump 线程将指定的 binary log 信息推送给 slave 节点。
  • slave 节点的 io 线程接收到消息后,将日志内容写入 relay log 文件。
  • slave 节点的 sql 线程检测到 relay log 新增了内容,马上解析 relay log 文件生成相应的 sql 语句,并将这些 sql 语句重放到数据库,保证主从数据一致性。

配置

创建目录结构

首先先搞定目录结构,我的目录结构如下,如果想按照自己的想法来组建目录,在下文中的 docker-compose.yaml 文件与 dockerfile 文件要注意修改文件路径。

详解用Docker构建MySQL主从环境

配置 docker-compose 模版文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25
version: "3"

services:

mysql-master:

build:

context: ./

dockerfile: mysql/master/dockerfile

container_name: mysql-master

volumes:

- ./mysql/master/data:/var/lib/mysql

restart: always

ports:

- 3305:3306

links:

- mysql-slave

mysql-slave:

build:

context: ./

dockerfile: mysql/slave/dockerfile

container_name: mysql-slave

volumes:

- ./mysql/slave/data:/var/lib/mysql

restart: always

ports:

- 3306:3306

配置 master 节点的 cluster.cnf 文件以及 dockerfile 文件

?

1

2

3

4

5

6

7

8

9

10

11

12
[mysqld]

server_id=100

binlog-ignore-db=mysql

log-bin=replicas-mysql-bin

binlog_cache_size=1m

binlog_format=mixed

slave_skip_errors=1062

# 我的 mysql 为 8.x,需要如下配置

default_authentication_plugin=mysql_native_password

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci
?

1

2

3
from mysql:latest

add ./mysql/master/cluster.cnf /etc/mysql/conf.d/cluster.cnf

env mysql_root_password=password

配置 slave 节点的 cluster.cnf 文件以及 dockerfile 文件

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
[mysqld]

server_id=101

binlog-ignore-db=mysql

binlog_cache_size=1m

binlog_format=mixed

slave_skip_errors=1062

relay_log=replicas-mysql-relay-bin

log_slave_updates=1

read_only=1

# 我的 mysql 为 8.x,需要如下配置

default_authentication_plugin=mysql_native_password

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci
?

1

2

3
from mysql:latest

add ./mysql/slave/cluster.cnf /etc/mysql/conf.d/cluster.cnf

env mysql_root_password=password

创建容器

?

1
docker-compose up -d mysql-master mysql-slave

运行上述命令进行容器创建,如果构建时间过长,可以考虑更换镜像源,例如下面几个国内优质镜像源:

网易: http://hub-mirror.c.163.com

阿里云: http://&lt ;你的id>.mirror.aliyuncs.com

中国科学技术大学: http://docker.mirrors.ustc.ed…

构建完成之后,使用 docker ps 命令查看一下容器是否正常运行,出现如下情形则可以认为已经构建成功。

详解用Docker构建MySQL主从环境

配置 slave 节点

详解用Docker构建MySQL主从环境

首先使用 docker 命令进入到 mysql-master 容器中,再登录到 mysql 输入 show master status 命令获取主库状态,这里我们要关心两个参数 file 以及 position ,之后配置从库会用到这两个参数。

详解用Docker构建MySQL主从环境

接下来使用 docker 命令进入 mysql-slave 容器,再登录到 mysql 输入以下语句进行与 mysql-master 连接。

?

1

2

3

4

5

6
change master to

master_host='mysql-master',

master_user='root',

master_password=你设置的密码,

master_log_file=上一步得到的 file 参数,

master_log_pos=上一步得到的 position 参数;

输入完成后再键入 start slave 命令启动 slave 服务。启动之后输入 show slave status \\g 命令查看 slave 节点状态,出现如下情形可认为配置成功。

详解用Docker构建MySQL主从环境

测试主从节点同步状态

详解用Docker构建MySQL主从环境

登录到 mysql-master 节点,创建一个全新的库,创建成功之后,切换到 mysql-slave 节点,输入 show databases; 命令,查看是否成功同步,出现如下情形则配置成功。其他操作可以自己尝试,这里不再做演示。

详解用Docker构建MySQL主从环境

总结

这是我自己尝试搭建 mysql 主从架构所记录的步骤,到此这篇关于详解用docker构建mysql主从环境的文章就介绍到这了,更多相关docker构建mysql主从内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://segmentfault.com/a/1190000023336513

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 详解用Docker构建MySQL主从环境 https://www.kuaiidc.com/67573.html

相关文章

发表评论
暂无评论