
首先拉取docker镜像,我们这里使用5.7版本的mysql:docker pull mysql:5.7
然后使用此镜像启动容器,这里需要分别启动主从两个容器
docker run -p 3339:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -p 3340:3306 --name mysql-sl*e -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
Master对外映射的端口是3339,Sl*e对外映射的端口是3340。因为docker容器是相互独立的,每个容器有其独立的ip,所以不同容器使用相同的端口并不会冲突。这里我们应该尽量使用mysql默认的3306端口,否则可能会出现无法通过ip连接docker容器内mysql的问题。
使用docker ps命令查看正在运行的容器:

此时可以使用N*icat等工具测试连接mysql

通过docker exec -it 5ddad8c2f368 /bin/bash命令进入到Master容器内部,也可以通过docker exec -it mysql-master /bin/bash命令进入。5ddad8c2f368是容器的id,而mysql-master是容器的名称。cd /etc/mysql/mysql.conf.d切换到/etc/mysql/mysql.conf.d目录下,然后vim mysqld.cnf对my.cnf进行编辑。此时会报出bash: vim: command not found,需要我们在docker容器内部自行安装vim。使用apt-get install vim命令安装vim
会出现如下问题:

执行apt-get update,然后再次执行apt-get install vim即可成功安装vim。然后我们就可以使用vim编辑my.cnf,在my.cnf中添加如下配置:
[mysqld] ## 同一局域网内注意要唯一 server-id=100 ## 开启二进制日志功能,可以随便取(关键) log-bin=mysql-bin
配置完成之后,需要重启mysql服务使配置生效。使用service mysql restart完成重启。重启mysql服务时会使得docker容器停止,我们还需要docker start mysql-master启动容器。
下一步在Master数据库创建数据同步用户,授予用户 sl*e REPLICATION SL*E权限和REPLICATION CLIENT权限,用于在主从库之间同步数据。
首先连接mysql数据库root@5ddad8c2f368:/# mysql -uroot -p123456CREATE USER 'sl*e'@'%' IDENTIFIED BY '123456';GRANT REPLICATION SL*E, REPLICATION CLIENT ON *.* TO 'sl*e'@'%';
授予复制账号REPLICATION CLIENT权限,复制用户可以使用SHOW MASTER STATUS, SHOW SL*E STATUS和 SHOW BINARY LOGS来确定复制状态。授予复制账号REPLICATION SL*E权限,复制才能真正地工作。

和配置Master(主)一样,在Sl*e配置文件my.cnf中添加如下配置:
[mysqld] ## 设置server_id,注意要唯一 server-id=101 ## 开启二进制日志功能,以备Sl*e作为其它Sl*e的Master时使用 log-bin=mysql-sl*e-bin ## relay_log配置中继日志 relay_log=edu-mysql-relay-bin
配置完成后也需要重启mysql服务和docker容器,操作和配置Master(主)一致。
relay log很多方面都跟binary log差不多。区别是:从服务器I/O线程将主服务器的二进制日志读取过来记录到从服务器本地文件,然后SQL线程会读取relay-log日志的内容并应用到从服务器,从而使从服务器和主服务器的数据保持一致。
MyBB 国外最好的免费论坛
MyBB的全称是mybboard,是一个基于PHP+MySQL搭建,功能强大,高效的开源论坛系统。 MyBB 使用了标准的论坛结构和模式,所以您的用户可以在您的论坛获得良好的用户体验。用户可以通过用户控制面板来自定义他们访问论坛的方式或者自定义他们想看到的论坛的内容,他们还可以方便地发表和答复一个主题并且标记与他们有关的主题。论坛管理员和版主可以使用MyBB的内置编辑器和版主工具等功能,控制并维
95 查看详情
![]()

在Master进入mysql,执行show master status;
File和Position字段的值后面将会用到,在后面的操作完成之前,需要保证Master库不能做任何操作,否则将会引起状态变化,File和Position字段的值变化。
在Sl*e 中进入 mysql,执行
CHANGE MASTER TO master_host = '172.17.0.2', master_user = 'sl*e', master_password = '123456', master_port = 3306, master_log_file = 'mysql-bin.000001', master_log_pos = 617, master_connect_retry = 30;
命令说明:
master_host :Master的地址,指的是容器的独立ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id查询容器的ip

master_port:Master的端口号,指的是容器的端口号
master_user:用于数据同步的用户
master_password:用于同步的用户的密码
master_log_file:指定 Sl*e 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值
master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值
master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
在Sl*e 中的mysql终端执行show sl*e status \G;用于查看主从同步状态。
正常情况下,Sl*eIORunning 和 Sl*eSQLRunning 都是No,因为我们还没有开启主从复制过程。使用start sl*e开启主从复制过程,然后再次查询主从同步状态show sl*e status \G;。
Sl*eIORunning 和 Sl*eSQLRunning 都是Yes,说明主从复制已经开启。此时可以测试数据同步是否成功。
主从复制排错:
使用start sl*e开启主从复制过程后,如果Sl*eIORunning一直是Connecting,则说明主从复制一直处于连接状态,这种情况一般是下面几种原因造成的,我们可以根据 Last_IO_Error提示予以排除。
测试主从复制方式就十分多了,最简单的是在Master创建一个数据库,然后检查Sl*e是否存在此数据库。
Master:
Sl*e:
最后让我们来看一下,一个 update 语句在节点 A 执行,然后同步到节点 B的完整流程图。
可以看到:主库接收到客户端的更新请求后,执行内部事务的更新逻辑,同时写入binlog。
备库B跟主库A之间维持了一个长连接。主库A内部有一个线程,专门用于服务备库B的这个长连接。
一个事务日志同步的完整过程是这样的:
change master命令,设置主库A的IP、端口、用户名、密码、以及要从哪个位置开始请求binlog,这个位置包含文件名和日志偏移量。start sl*e命令,这时侯备库会启动两个线程,io_thread 和 sql_thread。其中, io_thread负责与主库建立连接。以上就是基于Docker的MySQL主从复制搭建及原理的详细内容,更多请关注其它相关文章!
# 国外
# 广州企业营销网站建设
# seo优化诊断报告
# 石湾大沥网站建设
# 京山seo推广机构
# 蚌埠关键词排名软件优化
# 益阳营销推广企业有哪些
# 营销推广经理绩效评价
# 全国谷歌seo厂家
# CC图库网站建设
# SEO增发新股
# MySQL
# 您的
# 都是
# 免费论坛
# 可以使用
# 解锁
# 可以通过
# 重启
# 最好的
# 镜像
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
《sketchbook》选中部分图案移动方法
小红书如何引流到私信?引流到私信有用吗?
如何通过settings.json个性化您的VS Code体验
解决异步Python机器人中同步操作的阻塞问题
菜鸟裹裹怎样获得取件码_菜鸟裹裹获得取件码步骤
OPPO手机参数配置如何开启护眼模式_OPPO手机参数配置护眼模式开启指南
iPhone14无法连接蓝牙设备如何解决
英雄联盟争者留名活动介绍
win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】
《360浏览器》自动保存账号密码设置方法
解决Pandas DataFrame高度碎片化警告:高效创建多列的策略
mail.qq.com登录入口 QQ邮箱网页版直达
Sublime怎么自动添加CSS前缀_Sublime安装Autoprefixer插件
圆通快递官网入口查询单号 手机版官方查询入口
Go语言中方法与接收器:指针和值类型的调用机制详解
奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧
怎样设置开机后自动运行某个程序_Windows启动文件夹与任务计划【自动化】
电脑的“恢复环境(WinRE)”找不到怎么办_Windows系统恢复环境重建【高级修复】
windows10怎么开启卓越性能_windows10电源选项代码激活
Retrofit根路径POST请求:@POST("/") 的应用与解析
5G和6G的连接密度有什么区别 6G每平方公里能连接多少设备
海棠阅读登录教程_详细讲解海棠登录操作
使用VS Code调试Python代码:从入门到精通
《随手记》启用语音备注方法
深入理解J*aScript异步操作:setTimeout与调用栈的真相
在PHP环境中正确加载HTML资源:CSS样式与图片路径指南
Yandex俄罗斯搜索引擎官网入口 Yandex网页端直接访问
除了Copilot,还有哪些值得一试的VS Code AI插件?
漫蛙漫画官方版直通入口 2025漫蛙漫画免注册访问说明
高德地图导航路线偏差报警频繁怎么办 高德地图路线偏差修复与优化方法
Go语言反射机制:如何访问被嵌入结构体遮蔽的方法
智学网app怎么登录忘记密码_智学网app忘记密码找回与重新登录操作方法
Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置
猫眼电影app如何筛选支持退改签的影院_猫眼电影退改签影院筛选方法
mysql中如何配置字符集和排序规则_mysql字符集排序配置
Excel宏怎么删除_Excel中删除宏的详细操作流程
Lar*el Socialite单设备登录策略:实现用户唯一会话管理
易车网官网直达入口 易车网在线登录入口
Golang如何测试结构体方法_Golang reflect方法测试与调用技巧
网页版网易云音乐入口_网易云音乐在线官网登录
胃动力不足?试试这5个调理方法
yandex网页版直接登录 yandex官方入口平台访问方法
谷歌浏览器怎么把网页翻译成中文_Chrome网页翻译功能使用方法
J*aScript桌面应用_Electron多进程架构实战
《梦想世界:长风问剑录》药师一图流分享
快递物流路径揭秘
谷歌邮箱怎么换绑定邮箱Gmail安全备份邮箱修改方法
LINUX怎么查看显卡信息_LINUX查看GPU状态
C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用
163邮箱登录入口官网 163.com邮箱登录入口
2019-07-01
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。