基于 docker 搭建 mysql5.7 主从复制

news2024/9/28 13:19:12

安装 docker 的教程可以看我的另一篇文章,拉取 mysql 镜像的步骤也在里面,在这不再重复:https://blog.csdn.net/wanzijy/article/details/128695674

1. 主机搭建

因为本人虚拟机中已经存在了 mysql ,所以在使用镜像创建容器的时候,就不使用 3306 端口,以防有影响

1.1 创建容器

docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.13
  • --name mysql-master : 指定容器的名字为 mysql-master
  • -p 3307:3306 : 对外暴露的 3307 接口,对应的映射到内部的 3306 接口
  • -e MYSQL_ROOT_PASSWORD=root :指定 mysql 中 root 用户的密码为 root

创建完后,进入容器

docker exec -it mysql-master /bin/bash

1.2 安装 vim 与 net-tools

apt-get install net-tools
apt-get install vim

如果正常安装成功的话,本章节就不用继续往下看了

1.2.1 安装 vim 与 net-tools 报错解决

如果这个时候出现以下信息,不要慌,往下看

在这里插入图片描述

出现上面的信息的话,其实只要更新一下 apt-get 就好,输入以下命令

apt-get update

如果正常更新成功的话,就像刚刚一样安装 net-tools 和 vim 就好,本章节也不用继续往下看了

1.2.2 更新 apt-get 报错解决

此时可能会如下出现报错信息

在这里插入图片描述

在容器内进入 /etc/apt/ 目录
因为要改配置文件,保险起见,还是复制一份备份的较好

# 备份 source.list
cp sources.list sources.list.bak

然后执行下面命令添加 apt 镜像源

echo "deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse" >> /etc/apt/sources.list

然后再执行:apt-get update
成功后再安装:vim 和 net-tools
出现下面的警告,可以忽略
在这里插入图片描述

1.3 修改配置

打开 mysql 的配置文件

vim /etc/mysql/my.cnf

配置如下:

server-id=100  
log-bin=mysql-bin
binlog-ignore-db=mysql
binlog_cache_size=1M
binlog_format=mixed
  • server-id :同一局域网内注意要唯一
  • log-bin :开启二进制日志功能
  • binlog-ignore-db :复制过滤;不需要备份的数据库,mysql库一般不同步
  • binlog_cache_size :为每个 session 分配的内存,在事务过程中用来存储二进制日志的缓存
  • binlog_format :主从复制的格式(mixed, statement, row),默认格式是 statement

配置好后,ctrl + d 退出容器
然后重启容器

docker restart mysql-master

2. 从机搭建

2.1 创建容器

docker run --name mysql-slave -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root  -d mysql:5.7.13

像上述一样安装 vim 与 net-tools

2.2 修改配置

配置如下:

server-id=102
log-bin=mysql-slave-bin
relay_log=edu-mysql-relay-bin
binlog-ignore-db=mysql
log_bin_trust_function_creators=true
binlog_cache_size=1M
binlog_format=mixed

## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062
  • relay_log :配置中继日志
  • log_bin_trust_function_creators :如果需要同步函数或者存储过程设置为 true
  • slave_skip_errors :跳过主从复制中遇到的所有错误或指定类型的错误,避免 slave 端复制中断;如 1062 错误是指一些主键重复,1032 错误是因为主从数据库数据不一致

3. 配置

3.1 主机操作

进入主机所在容器,登录 mysql

创建数据同步用户 slave,并授予 REPLICATION SLAVE 权限和 REPLICATION CLIENT 权限,用于在主从库之间同步数据,然后刷新

# 创建用户 slave,密码为 123456
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

# 授权
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

# 刷新
flush privileges;

查看 File(日志文件) 和 Position(复制开始的位置) 的值

show master status;

在这里插入图片描述

3.2 从机操作

3.2.1 绑定主机

进入从机所在容器,登录 mysql

change master to master_host='192.168.56.130', master_user='slave', master_password='123456', master_port=3307 , master_log_file='mysql-bin.000002',master_log_pos=761, master_connect_retry=30;
  • master_host :主机的地址,指的是容器的独立 IP
  • master_port:主机的端口号,指的是容器的端口号,要和 docker 启动时, 3306 端口向外暴露的端口号一致
  • master_user:用于数据同步的用户
  • master_password:用于同步的用户的密码
  • master_log_file:指定从机从哪个日志文件开始复制数据,即上面中提到的 File 字段的值
  • master_log_pos:从哪个位置开始读,即上面中提到的 Position 字段的值
  • master_connect_retry:如果连接失败,重试的时间间隔,单位是秒,默认是60秒

3.2.2 启动

# 启动主从复制
start slave;

# 查看主从同步状态
show slave status\G;

在这里插入图片描述

当看到上面图片出现的两个值时,即为搭建成功

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

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

相关文章

【论文翻译】End-to-End Human Pose and Mesh Reconstruction with Transformers

【cvpr论文】End-to-End Human Pose and Mesh Reconstruction with Transformers (thecvf.com) 【github】microsoft/MeshTransformer: Research code for CVPR 2021 paper "End-to-End Human Pose and Mesh Reconstruction with Transformers" (github.com) 摘要 我…

学习笔记:Java 并发编程③

若文章内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系博主删除。 视频链接:https://www.bilibili.com/video/av81461839配套资料:https://pan.baidu.com/s/1lSDty6-hzCWTXFYuqThRPw&am…

在甲骨文云容器实例(Container Instances)上部署Ubuntu Desktop

甲骨文云推出了容器实例,这是一项无服务器计算服务,可以即时运行容器,而无需管理任何服务器。 今天我们尝试一下通过容器实例部署Ubuntu Bionic Desktop。 创建容器实例 在甲骨文容器实例页面,单击"创建容器实例"&…

Java 笔试题

Java 笔试题目录概述需求:设计思路实现思路分析1.java 面试题参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Surviv…

分享151个PHP源码,总有一款适合您

PHP源码 分享151个PHP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 151个PHP源码下载链接:https://pan.baidu.com/s/1T_Hs4j0t39b-Y8UWHmAKyw?pwd7ao0 提取码&#…

论文浅尝 | DB4Trans:数据库内置知识图谱嵌入模型训练引擎

笔记整理:柳鹏凯,天津大学硕士发表期刊:计算机学报 第45卷Vol.45, 第9期 No.9链接:http://cjc.ict.ac.cn/online/onlinepaper/lpk-202297212908.pdf动机知识图谱嵌入技术主要将知识图谱中的实体和关系嵌入到连续的向量空间中&…

Centos Java1.8+Nginx+redis+pgsql 手工配置

一、系统升级,安装系统常用工具及配置 1.1 升级软件及Centos 内核 yum update -y yum clean all cat /etc/redhat-release 1.2 安装虚拟机守护进程 yum install qemu-guest-agent -y 1.3 安装系统常用工具包 yum install lrzsz vim wget dnf -y 1.4关…

2023牛客寒假算法基础集训营3 -- E-勉强拼凑的记忆(贪心 + 二分)

题目如下: 题解 or 思路: 我们可以发现:除了 n2n 2n2 无解, 其他情况答案至少为 n12\frac{n 1}{2}2n1​ 答案在 n12\frac{n 1}{2}2n1​ 到 nnn 之间 我们可以假设 答案为 ansansans 最优摆放为: 所以可以二分去求…

软件工程 黄金点游戏

这个故事最初出现在 《移山之道》中,我经常拿来做和创新的时机相关课堂练习和讨论,效果很好。我把这个练习和它的一些延伸话题都搬到这个新博客里。 黄金点游戏 N个同学(N通常大于10),每人写一个 0~100之间的有理数 …

1、认识IntelliJ IDEA

文章目录1、认识IntelliJ IDEA1.1 JetBrains公司介绍1.2 IntelliJ IDEA介绍1.3 IDEA的主要优势(对比Eclipse)1.3.1 功能强大1.3.2 符合人体工程学1.4 IDEA的下载【尚硅谷】idea实战教程-讲师:宋红康 生活是属于每个人自己的感受,不…

Python:Docx文档模板创建使用

✨博文作者 wangzirui32 💖 喜欢的可以 点赞 收藏 关注哦~~ 👉本文首发于CSDN,未经许可禁止转载 😎Hello,大家好,我是wangzirui32,今天我们来学习Docx文档模板创建与使用,开始学习吧…

2023新春祝福html代码,包你学会

前言大家新年好!今天是年三十,在这个充满喜悦和欢乐的节日里,祝大家新年快乐。不论你在外面过的风生水起还是不尽人意,回到家一家人团团聚聚才是最好的。进入正题,我们作为IT民工,我们要用自己的方式表达对…

第三天总结 之 商品管理界面的实现 之 页面中 下拉框问题的解决

页面中下拉框问题的解决 在页面中 点击商品类型这个图标 会出现下拉框 展示所有的商品类型 然后通过选择的 类型 来作为 查询时的一个条件 即 当不选或选择展示所有商品时 按照 不对这个条件进行操作 选择其他的商品类型时 会查询出含有该类型的商品 下拉框中 数据的展示与 如…

java设计模式中责任链模式是什么/怎么用责任链模式避免if-else语句

继续整理记录这段时间来的收获,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 6.5 责任链模式 6.5.1 定义 职责链模式,为避免请求发生者与多个处理者耦合在一起,将所有请求处理者通过前一对象记住其下一对象的引用而连…

重学Attention

注意力机制对比RNN 主要解决了RNN无法并行,并且不能解决长序列依赖问题 所以为什么设计 Q K V这三个矩阵 一边来是让 K V的 首先通过Q 和 K点击计算Attention矩阵,这个矩阵表明的是V上每一个特征与Q的相关程度,相关程度高的,权重…

解剖一道有意思的指针题

这道指针题挺有意思的,将各级指针之间的联系联系起来,仔细分析会发现也不难,重在逻辑思维,做完将会加深你对指针的理解的,好好享受指针带来的乐趣吧!!!结果是什么呢?//题…

FPGA 20个例程篇:19.OV7725摄像头实时采集送HDMI显示(三)

第七章 实战项目提升,完善简历 19.OV7725摄像头实时采集送HDMI显示(三) 在详细介绍过OV7725 CMOS Sensor的相关背景知识和如何初始化其内部寄存器达到输出预期视频流的目的后,就到了该例程的核心内容即把OV7725输出的视频流预先缓…

Zotero入门教程

文章目录一、生成Bibliography二、Zotero文献自动导入1. 为什么要使用SCI-HUB2. 如何自定义PDF解析器三、在Zotero中添加Extension四、文件存储位置的修改五、markdown笔记功能一、生成Bibliography 在 Document Preferences中点击“管理样式”,就可以在Zotero Styl…

我的周刊(第075期)

我的信息周刊,记录这周我看到的有价值的信息,主要针对计算机领域,内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。🎯 项目elasticvue[1]基于 Vue 的 Elasticsearch 管理客户端…

Linux常见命令 16 - 权限管理命令 chown, chgrp, umask

目录 1. 改变文件/目录所有者 chown 2. 改变文件/目录的所属组 chgrp 3. 显示文件的缺省(默认)权限 umask [-S] 1. 改变文件/目录所有者 chown 改变文件权限使用chmod,只有root和当前文件拥有者可以更改,如果想要更改目录/文件的所有者&#xff0c…