Docker 实现MySQL 主从复制

一、拉取镜像

docker pull mysql:5.7

相关命令:

  • 查看镜像:docker images

二、启动镜像

启动mysql01、02容器:

docker run -d -p 3310:3306 -v /root/mysql/node-1/config:/etc/mysql/ -v /root/mysql/node-1/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456  --name mysql01 mysql:5.7
docker run -d -p 3311:3306 -v /root/mysql/node-2/config:/etc/mysql/ -v /root/mysql/node-2/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456  --name mysql02 mysql:5.7

命令解释:

  • -d: 后台运行容器,并返回容器ID
  • -p 宿主机端口:容器端口 :将容器的端口映射到宿主机端口
  • -e MYSQL_ROOT_PASSWORD=123456 :配置数据库连接密码
  • -v 宿主机路径:容器内路径 :将配置文件夹挂载到宿主机
  • –name 容器名字:将容器命名为 mysql01(02)

docker ps -a #查看全部容器(运行中加未运行的)


都已正常启动。

三、连接测试

搭建过程中,为了减少错误的产生,就多了这一步的测试。

我们可以直接拿Navicat来进行连接测试。

注意事项: 记得打开安全组,虚拟机的话记得处理好防火墙。(另外我这里是3310,可根据自己需要更改端口)

测试启动成功后,我们再来进行下一步。

四、编写主从复制配置文件

之前我们启动的时候写了这句-v /root/mysql/node-1/config:/etc/mysql/,将mysql 的配置文件夹和宿主机的文件夹挂载起来的。

那么我们就可以直接在宿主机下的/root/mysql/node-1/config/编写配置文件了。

4.1、编写主机配置文件

vim my.cnf[mysqld]#修改配置文件:vim /etc/my.cnf
#主服务器唯一ID
server-id=1
#启用二进制日志
log-bin=mysql-bin
# 设置不要复制的数据库(可设置多个)
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#设置需要复制的数据库 需要复制的主数据库名字
binlog-do-db=testdb
#设置logbin格式
binlog_format=STATEMENT

退出方式

先按Esc键–>再按Shift+:键–>输入wq–保存退出。

4.2、编写从机配置文件

从机上的my.cnf也是同样的方式

[mysqld]
#从服务器唯一ID
server-id=2
#启用中继日志
relay-log=mysql-relay

重新启动mysql容器

docker restart mysql01  mysql02	

在这里插入图片描述

docker ps -a #查看容器

在这里插入图片描述

接下来就是搭建主从复制了。

五、搭建主从复制

5.1、主机设置

docker exec -it mysql01 /bin/bash #进入容器
mysql -uroot -p123456 #连接mysql

5.2、主机上建立帐户并授权 slave

给从机授权,为了让从机能够和主机连接起来。

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123456';

5.3、查询master状态

show master status; #查询master的状态

在这里插入图片描述

把这里的File和Position记下来哈,等下在从机上要用到。

File: mysql-bin.000001
Position: 438

Binlog_Do_DB:需要复制的数据库。
Binlog_Ignore_DB:不需要复制的数据库。

注意:此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化

5.4、从机设置

进入mysql02容器

docker exec -it mysql02 /bin/bash 
mysql -uroot -p123456

复制主机的命令

CHANGE MASTER TO MASTER_HOST='主机的ip地址',MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=438;#解释:# 	CHANGE MASTER TO MASTER_HOST='172.16.0.3',#	MASTER_USER='slave'(刚刚配置的用户名),#	MASTER_PASSWORD='123456'(刚刚授权的密码),#	master_port=主机开放的端口 我这里是3310端口,#	MASTER_LOG_FILE='mysql-bin.具体数字',MASTER_LOG_POS=具体值(之前的Position);

在这里插入图片描述

注意事项:如果在这里出现错误,先重置。执行完下面两条命令。

stop slave;
reset master;

启动从服务器复制功能

start slave;

查看从服务器状态

show slave status\G;

在这里插入图片描述
#下面两个参数都是Yes,则说明主从配置成功!

Slave_IO_Running: Yes 
Slave_SQL_Running: Yes

六、测试主从复制

6.1、主机新建库 -从机复制


在主机新建testdb后,从机也随之就有了。(这里的命名是确定的,因为在配置文件中说明了复制testdb数据库)。

6.1、新建表-从机复制

6.3、insert 记录-从机复制

当然这些还是有看不出到底有没有复制的话,咱们直接测试函数,就能知道啦。

insert into my_table01(id,name) VALUE(1,@@hostname);

这就可以看出主从复制确实是成功的,但是在使用函数上有数据不一致的问题。

七、重置配置主从

如何停止从服务复制功能

stop slave; 

如何重新配置主从 (即清除之前的主从配置)

stop slave;
reset master;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC:设置响应

目录 引言 1. 返回静态页面 1.1 Spring 默认扫描路径 1.2 RestController 1.2.1 Controller > 返回页面 1.2.2 ResponseBody 2. 返回 HTML 2.1 RequestMapping 2.1.1 produces(修改响应的 Content-Type) 2.1.2 其他属性 3. 返回 JSON 4. 设置状态码 4.1 HttpSer…

基于python+Django+mysql鲜花水果销售商城网站系统设计与实现

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

提示词的艺术----AI Prompt撰写指南(个人用)

提示词的艺术 写在前面 制定提示词就像是和朋友聊天一样,要求我们能够清楚地表达问题。通过这个过程,一方面要不断练习提高自己地表达能力,另一方面还要锻炼自己使用更准确精炼的语言提出问题的能力。 什么样的提示词有用? 有…

Spring Boot自动配置原理:如何实现零配置启动

引言 在现代软件开发中,Spring 框架已经成为 Java 开发领域不可或缺的一部分。而 Spring Boot 的出现,更是为 Spring 应用的开发带来了革命性的变化。Spring Boot 的核心优势之一就是它的“自动配置”能力,它极大地简化了 Spring 应用的配置…

大模型GUI系列论文阅读 DAY2续2:《使用指令微调基础模型的多模态网页导航》

摘要 自主网页导航的进展一直受到以下因素的阻碍: 依赖于数十亿次的探索性交互(通常采用在线强化学习),依赖于特定领域的模型设计,难以利用丰富的跨领域数据进行泛化。 在本研究中,我们探讨了基于视觉-语…

在视频汇聚平台EasyNVR平台中使用RTSP拉流的具体步骤

之前有用户反馈,在EasyNVR平台中添加Pull时使用海康设备的RTSP流地址无法播放。经过研发的优化及一系列严谨的验证流程,我们已确认优化后的EasyNVR平台,通过Pull方式添加海康设备的RTSP流已经能够正常播放。以下是具体的操作步骤:…

Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化

Debezium日常分享系列之:对于从Oracle数据库进行快照的性能优化 源数据库Kafka Connect监控测试结果 源数据库 Oracle 19c,本地,CDB数据库主机的I/O带宽为6 GB/s,由此主机上运行的所有数据库共享临时表空间由42个文件组成&#x…

C++书籍 第一部分专业C++程序设计概述

1&#xff0c;必不可少的“hello world” #include<iostream>int main(int argc, char** argv) {std::cout << "hello world" << std::endl;return 0; } 这个是一个极其简单的程序&#xff0c;虽然没有多大简直&#xff0c;但是可以体现c程序格式方…

VIVADO ILA IP进阶使用之任意设置ILA的采样频率

VIVADO ILA IP进阶使用之任意设置ILA的采样频率 VIVADO ILA IP和VIO IP结合使用任意设置ILA的采样频率 目录 前言 一、VIO IP的配置 二、ILA IP的配置 三、测试代码 四、测试结果 总结 前言 VIVADO中编写完程序上板测试时经常会用到viavdo自带的ILA逻辑分析仪IP核&#x…

spring @EnableAspectJAutoProxy @Aspect的使用和源码流程

目录 测试代码EnableAspectJAutoProxyAspectJAutoProxyRegistrarAnnotationAwareAspectJAutoProxyCreatororg.springframework.context.support.AbstractApplicationContext#registerBeanPostProcessors 实例化AnnotationAwareAspectJAutoProxyCreator bean "a"的代理…

【BUUCTF】[GXYCTF2019]BabySQli

进入页面如下 尝试万能密码注入 显示这个&#xff08;qyq&#xff09; 用burp suite抓包试试 发现注释处是某种编码像是base编码格式 MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5 可以使用下面这个网页在线工具很方便…

重生之我在异世界学编程之算法与数据结构:深入堆篇

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 正文一、堆的基本概念二、堆的存储表示三…

《自动驾驶与机器人中的SLAM技术》ch8:基于预积分和图优化的紧耦合 LIO 系统

目录 1 预积分 LIO 系统的经验 2 预积分图优化的顶点 3 预积分图优化的边 3.1 NDT 残差边&#xff08;观测值维度为 3 维的单元边&#xff09; 4 基于预积分和图优化 LIO 系统的实现 4.1 IMU 静止初始化 4.2 使用预积分预测 4.3 使用 IMU 预测位姿进行运动补偿 4.4 位姿配准部…

软件测试—— 接口测试(HTTP和HTTPS)

软件测试—— 接口测试&#xff08;HTTP和HTTPS&#xff09; HTTP请求方法GET特点使用场景URL结构URL组成部分URL编码总结 POST特点使用场景请求结构示例 请求标头和响应标头请求标头&#xff08;Request Headers&#xff09;示例请求标头 响应标头&#xff08;Response Header…

【Excel超实用,VLOOKUP函数,通过excel数据精准匹配,将一个excel文件的某列数据,用另一个excel文件快速填充】

1、使用背景 如下图1所示&#xff0c;1.xlsx文件&#xff0c;有两列数据&#xff0c;一列序号&#xff0c;一列内容&#xff0c; 我现在需要将第二列的内容快速完成填充&#xff0c;并且有相应的excel模板作为参照。 图1 如图2所示&#xff0c;2.xlsx是模板文件&#xff0c;序…

Transformer详解:Attention机制原理

前言 Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者&#xff0c;本系列文章是作者参加DataWhale2025年1月份学习赛&#xff0c;旨在讲解Transformer模型的理论和实践。&#x1f632; 本文将详细探讨Attention机制的原理…

PyTorch使用教程(14)-如何正确地选择损失函数?

在机器学习和深度学习的广阔领域中&#xff0c;损失函数&#xff08;Loss Function&#xff09;扮演着至关重要的角色。它不仅是衡量模型预测结果与实际数据之间差异的关键指标&#xff0c;还是指导模型优化方向、影响最终性能的核心要素。选择合适的损失函数&#xff0c;对于提…

P1825 [USACO11OPEN] Corn Maze S 刷题笔记

P1825 [USACO11OPEN] Corn Maze S - 洛谷 | 计算机科学教育新生态 定义状态空间 结构体 精简代码 遇到多种情况判断不要全写进check里面 分开写 传送门是大写字母 A-z 其acll码值 是 65-90 我们将传送门代表的字母-65 就可以将其值映射到 0-26 从而存下相应的传送门坐标…

01设计模式(D3_设计模式类型 - D3_行为型模式)

目录 一、模版方法模式 1. 基本介绍 2. 应用案例一&#xff1a;豆浆制作问题 需求 代码实现 模板方法模式的钩子方法 3. View的draw&#xff08;Android&#xff09; Android中View的draw方法就是使用了模板方法模式 模板方法模式在 Spring 框架应用的源码分析 知识小…

Nginx在Linux中的最小化安装方式

1. 安装依赖 需要安装的东西&#xff1a; wget​&#xff0c;方便我们下载Nginx的包。如果是在Windows下载&#xff0c;然后使用SFTP上传到服务器中&#xff0c;那么可以不安装这个软件包。gcc g​&#xff0c;Nginx是使用C/C开发的服务器&#xff0c;等一下安装会用到其中的…