前言
本篇文章记录我使用 docker-compose 以及 dockerfile 来构建基于 binlog 的 mysql 主从环境。如果你严格按照文中的步骤进行配置,相信很快就可以搭建好一个基础的 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-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://< ;你的id>.mirror.aliyuncs.com
中国科学技术大学: http://docker.mirrors.ustc.ed…
构建完成之后,使用 docker ps 命令查看一下容器是否正常运行,出现如下情形则可以认为已经构建成功。
配置 slave 节点
首先使用 docker 命令进入到 mysql-master 容器中,再登录到 mysql 输入 show master status 命令获取主库状态,这里我们要关心两个参数 file 以及 position ,之后配置从库会用到这两个参数。
接下来使用 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 节点状态,出现如下情形可认为配置成功。
测试主从节点同步状态
登录到 mysql-master 节点,创建一个全新的库,创建成功之后,切换到 mysql-slave 节点,输入 show databases; 命令,查看是否成功同步,出现如下情形则配置成功。其他操作可以自己尝试,这里不再做演示。
总结
这是我自己尝试搭建 mysql 主从架构所记录的步骤,到此这篇关于详解用docker构建mysql主从环境的文章就介绍到这了,更多相关docker构建mysql主从内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!
原文链接:https://segmentfault.com/a/1190000023336513
相关文章
- 服务器技术之硬件冗余技术 2025-05-27
- 服务器是租用还是服务器托管好? 2025-05-27
- 什么是DNS以及它如何影响服务器? 2025-05-27
- 刀片服务器与机架服务器的区别介绍 2025-05-27
- 服务器虚拟化技术深度科普 2025-05-27
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-05-26 58
-
2025-05-27 50
-
2025-05-27 99
-
2025-05-25 19
-
2025-05-26 54









