当前位置: 首页 > news >正文

Docker搭建MySQL8.0主从复制(一主一从)

0. 配置说明

宿主机使用的版本为19045的win10专业版,MySQL使用的是8.0+,Docker容器使用Linux。

1. 安装Docker Desktop

修改Docker默认安装路径

安装包自己就提供了修改安装路径的功能,CMD中运行:

“Docker Desktop Installer.exe” install --installation-dir=

--installation-dir=<path>: changes the default installation location (C:\Program Files\Docker\Docker)

2. 在Docker中安装MySQL

可以访问 MySQL 镜像库地址:https://hub.docker.com/_/mysql?tab=tags 查看可用的其他mysql版本,默认为最新版本mysql:latest

2.1 拉取MySQL镜像

$ docker pull mysql:latest

image-20231007130311640

2.2 查看本地镜像

$ docker images

image-20231007130538272

2.3 启动MySQL容器实例

$ docker run --name mysql -p 3309:3306 -e MYSQL_ROOT_PASSWORD=5508769123 -d mysql

参数说明:

  • docker run:告诉Docker启动一个新的容器
  • –name mysql :指定了容器的名称,这里是 “mysql”
  • -p 3309:3306:端口映射设置,将容器内的MySQL数据库端口(默认为3306)映射到主机上的3309端口。这样可以通过主机的3309端口访问MySQL服务器
  • -e MYSQL_ROOT_PASSWORD=5508769123:环境变量的设置,用于配置MySQL容器的根用户(root)的密码。这里,密码被设置为 “5508769123”
  • -d:表示以"后台"(detached)模式运行容器
  • mysql:要运行的Docker镜像的名称

image-20231007133351291

下面给出的输出16821a8792a185997c1b5df334fa4461a157488e90d881902596e7ff3db8c42f为容器的id。

2.4 检查安装

$ docker ps

image-20231007133459706

打开Docker Desktop检查

image-20231007133558413

image-20231007133610652

宿主机登录Docker中的MySQL

image-20231007134012443

3. 主从复制

3.1 设置主库(这里为宿主机器)

  1. 修改主库MySQL数据库的配置文件,这里配置文件位置为:C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

    添加信息为:

    [mysqld]
    log-bin=mysql-bin #必须启用二进制日志
    server-id=100 #必须服务器唯一ID
    

    找到[mysqld]标签然后添加下面两行即可

    image-20231007135215460

  2. 重启MySQL服务

    (管理员权限)

    $ net stop mysql80$ net start mysql80
    

    image-20231007140028457

  3. 在主库创建新用户并赋权

    登录主库然后执行下面两条指令:

    CREATE USER 'mercurows'@'%' IDENTIFIED WITH caching_sha2_password BY '5508769123';
    GRANT REPLICATION SLAVE , REPLICATION CLIENT ON *.* TO 'mercurows'@'%';
    

    **注意:**mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。我们发现root的加密规则为caching_sha2_password,现在修改为mysql_native_password,

    ALTER USER 'mercurows'@'%' IDENTIFIED WITH 'mysql_native_password' BY '5508769123';
    

    解释:

    • CREATE USER:创建一个新用户。

    • 'mercurows'@'%':新用户的标识符。'mercurows' 是用户名,'%' 表示这个用户可以从任何主机连接到MySQL服务器。如果想限制用户只能从特定主机连接,可以在 '%' 的位置指定相应的主机地址。

    • IDENTIFIED WITH caching_sha2_password BY '5508769123':用户的身份验证方法和密码。在这里用户的身份验证方法被设置为 caching_sha2_password,并且密码被设置为 '5508769123'注意:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。

    • REPLICATION SLAVE, REPLICATION CLIENT:表示授予用户 ‘mercurows’ 两种权限:REPLICATION SLAVE(用于复制从其他MySQL服务器)和 REPLICATION CLIENT(用于查询和管理复制状态)。

    • ON *.*:表示授予权限的范围,*.* 表示所有数据库和所有表。

    • TO 'mercurows'@'%':这部分指定了要授予权限的用户和其访问主机。与前一个命令相同,'mercurows'@'%' 表示 ‘mercurows’ 用户可以从任何主机连接。

    检查:

    flush privileges;
    SHOW GRANTS FOR 'mercurows'@'%';
    

    image-20231007141729598

  4. 检查主库状态

    show master status;
    

    image-20231007152113200

并记录FilePosition这两个记录,这里是DESKTOP-UPK0D57-bin.0000381353,注意:在完成设置之前都不能对主库进行操作以免这两个记录发生改变

3.2 设置从库(这里为Docker中的MySQL)

  1. 修改从库MySQL数据库的配置文件,这里文件在/etc/my.cnf

    添加信息为:

    [mysqld]
    server-id=100 #必须服务器唯一ID
    

    找到[mysqld]标签然后添加下面一行然后保存即可

    image-20231007143535953

  2. 重启MySQL服务(我这里直接重启容器了)

  3. 登录从库中的MySQL然后执行下面的语句:

    change master to master_host='192.168.1.172',master_port=3306,master_user='mercurows',master_password='5508769123',master_log_file='DESKTOP-UPK0D57-bin.000038',master_log_pos=1353;start slave;
    

    解释:

    • change master to:告诉MySQL服务器,接下来要更改主从复制的设置
    • master_host='192.168.1.172':指定主数据库的主机名或IP地址。在这里就是我宿主电脑的IP地址
    • master_port=3306:指定主数据库的端口号。默认情况下,MySQL的端口号是3306
    • master_user='mercurows':指定连接到主数据库的用户名,这里用户名是 mercurows。这个就是上面主数据库中刚刚创建的用户
    • master_password='5508769123':这是指定连接到主数据库的用户的密码,这里密码是 5508769123
    • master_log_file='DESKTOP-UPK0D57-bin.000038':这是指定主数据库上用于复制的二进制日志文件的名称。在主从复制中,主数据库会将更改记录在二进制日志文件中,从数据库会从这些文件中读取并应用这些更改。而这个日志名称在上面的3.1中的4.检查主库状态中得出
    • master_log_pos=1353:这是指定从哪个位置开始读取主数据库的二进制日志文件。而这个位置在上面的3.1中的4.检查主库状态中得出

    image-20231007152446485

  4. 检查

    show slave status \G;
    

    image-20231007152624652

slave机器上有两个关键的进程,必须两个都要显示为 Y E S YES YES,一个是Slave_IO_Running:,一个是Slave_SQL_Running:一个负责与主机的io通信,一个负责自己的slave mysql进程。

3.3 测试

初始数据库情况:image-20231007153210127

mysql–主库,slave–从库

  1. 在主库中创建testdatabase数据库然后刷新从库:

image-20231007153357739

  1. 在主库创建user表并刷新从库

image-20231007153643507

经测试,对主库的增删改均能同步到从库中。

参考

  1. 如何在Windows上更改Docker的默认安装路径?
  2. docker搭建mysql8主从复制(一主一从)

相关文章:

Docker搭建MySQL8.0主从复制(一主一从)

0. 配置说明 宿主机使用的版本为19045的win10专业版&#xff0c;MySQL使用的是8.0&#xff0c;Docker容器使用Linux。 1. 安装Docker Desktop 略 修改Docker默认安装路径 安装包自己就提供了修改安装路径的功能&#xff0c;CMD中运行&#xff1a; “Docker Desktop Installe…...

40V汽车级P沟道MOSFET SQ4401EY-T1_GE3 工作原理、特性参数、封装形式—节省PCB空间,更可靠

AEC-Q101车规认证是一种基于失效机制的分立半导体应用测试认证规范。它是为了确保在汽车领域使用的分立半导体器件能够在严苛的环境条件下正常运行和长期可靠性而制定的。AEC-Q101认证包括一系列的失效机制和应力测试&#xff0c;以验证器件在高温、湿度、振动等恶劣条件下的可…...

记录在搭建Jenkins时,所遇到的坑,以及解决方案

项目场景&#xff1a; 记录在搭建Jenkins时,所遇到的坑,以及解决方案.问题描述1 在使用Jenkins构建时,报错如下&#xff1a; cp: cannot stat /project/xx/xxxx/dist/: No such file or directory Build step Execute shell marked build as failure Finished: FAILURE解决方…...

二极管“天马行空”的作用,你知道吗?

网友&#xff1a;二极管怎么有这么多种类呀&#xff1f; 工程师&#xff1a;二极管可以说除了电阻电容外用的比较多的一种元器件&#xff0c;起到的作用多着呢 那么二极管都可以起到哪些作用呢&#xff1a; 一、防反作用&#xff0c;主回路中串联一个二极管&#xff0c;是利用…...

鼎盛合:adc芯片的五种结构

随着国内消费电子产品、通信、工业自动化、汽车电子等行业的快速发展&#xff0c;对ADC芯片的需求不断增加&#xff0c;国内ADC芯片近年也在持续稳定地发展着。ADC种类多样&#xff0c;可分为单通道ADC、多通道ADC、高速ADC、精密ADC和集成ADC等&#xff0c;主要应用于医疗仪器…...

CTF 全讲解:[SWPUCTF 2021 新生赛]Do_you_know_http

文章目录 参考环境题目hello.php雾现User-Agent伪造 User-AgentHackBarHackBar 插件的获取修改请求头信息 雾散 a.php雾现本地回环地址与客户端 IP 相关的 HTTP 请求头X-Forwarded-For 雾散 参考 项目描述搜索引擎Bing、GoogleAI 大模型文心一言、通义千问、讯飞星火认知大模型…...

物联网AI MicroPython传感器学习 之 4路电容式触摸开关

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; 一、产品简介 板载TTP224电容式4键触摸感应IC&#xff0c;开发者通过触摸该电容模块获取对应的高低电平状态&#xff0c;可以广泛应用于灯光控制、玩具、家用电器等产品中。 引脚定义&#xff1a; VCC&…...

头戴式耳机什么牌子最好?头戴式耳机推荐性价比高

脖子上挎个头戴式作为随身装备&#xff0c;不仅给服装配饰添加了潮流感&#xff0c;还可以可以随时聆听音乐&#xff0c;随着广大消费者的生活水平不断提高&#xff0c;市面上的头戴式耳机越来越多。 选择头戴式耳机时无非就是听音质、看外观、舒适度等等&#xff0c;那么头戴…...

第 366 场周赛 LeetCode 周赛题解

A 分类求和并作差 模拟 class Solution { public:int differenceOfSums(int n, int m) {int res 0;for (int i 1; i < n; i)res i % m ! 0 ? i : -i;return res;} };B 最小处理时间 排序&#xff1a;设四个 p r o c e s s o r T i m e processorTime processorTime 的元…...

Linux: tcpdump抓包示例

文章目录 1. 前言2. TCP 状态机3. tcpdump 抓包示例3.1 抓连接握手包&#xff1a;三次握手3.2 抓数据包示例3.3 抓终结连接&#xff1a;四次挥手 4. 参考资料 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任…...

seafile server10.0.1 onlyoffice

目标&#xff1a;解决seafile server无法查看office相关文档问题 seafile server 已安装完成 安装onlyoffice 一、Install Docker Engine on Ubuntu 20.04 验证是否安装成功 sudo docker run hello-world 二、拉取onlyoffice/documentserver 镜像及安装 docker network cre…...

商城系统选型:Java商城系统还是PHP商城系统好?

电子商务的不断发展&#xff0c;商城系统成为了企业建设在线销售平台的重要组成部分。 可是在选择合适的商城系统时&#xff0c;许多企业面临着一个重要的决策&#xff1a;是选择Java商城系统还是PHP商城系统呢&#xff1f;下面就对这两种常见的商城系统进行比较&#xff0c;并…...

【多线程进阶】线程安全的集合类

文章目录 前言1. 多线程环境使用 ArrayList2. 多线程环境使用队列3. 多线程环境使用哈希表3.1 HashTable3.2 ConcurrentHashMap 总结 前言 本文主要讲解 Java 线程安全的集合类, 在之前学习过的集合类中, 只有 Vector, Stack, HashTable, 是线程安全的, 因为在他们的关键方法中…...

016 Spring Boot + Vue 图书管理系统

Spring Boot Vue 图书馆管理系统&#xff08;library-system&#xff09; 本地快捷预览项目 第一步&#xff1a;运行 db 文件夹下的springboot-vue.sql(询问作者获取)&#xff0c;创建springboot-vue数据库 第二步&#xff1a;修改后端数据库配置文件&#xff0c;启动后端 …...

C语言中volatile/register/const/static/extern/auto关键字的作用

目录 一、volatile 二、register详解 三、const详解 四、static详解 五、extern详解 语法 作用 六、auto详解 突然想总结一下这些关键字的作用&#xff0c;灵活使用这些对程序的可靠性和速率都有提高 一、volatile volatile是防止编译器优化&#xff0c;如果是高频繁…...

docker compose的安装和使用

docker-copose 介绍 docker-compose 是一个容器编排工具&#xff08;自动化部署、管理&#xff09;; 它用来在单台 Linux 服务器上运行多个 Docker 容器; docker-compose 使用YAML文件来配置所有需要运行的 Docker 容器&#xff0c;该 YAML 文件的默认名称为 docker-compose.…...

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21‘ not found (required by

在某项目中遇到下面的错误&#xff0c; ./model2trt_v2: /lib64/libstdc.so.6: version GLIBCXX_3.4.21 not found (required by ./model2trt_v2) ./model2trt_v2: /lib64/libstdc.so.6: version GLIBCXX_3.4.21 not found (required by ../../../lib/linux_lib/libcuda_utils…...

数字化转型的必备工具:智能呼叫中心系统的应用

数字化转型已经成为企业发展的必然趋势&#xff0c;在这个过程中&#xff0c;智能呼叫中心系统成为了一个不可或缺的工具。智能呼叫中心系统通过整合各种通信渠道和自动化技术&#xff0c;为企业提供了高效、智能的客户服务解决方案。 首先&#xff0c;系统能够集成多种通信渠…...

macOS Sonoma 正式版系统已发布,macos14值得更新吗

北京时间9月27日macOS Sonoma 正式版系统发布&#xff0c;为 Mac 带来一系列丰富新功能&#xff1a;优化小组件、升级视频会议、沉浸式游戏体验等&#xff0c;最新macos14值得更新吗&#xff1f;这里根据我一个月的试用beta版本体验来分享一下。 我使用的是M1芯片的MacBook air…...

数据结构-图-最短路径问题

最短路径问题 单源最短路径Dijkstra算法原理代码实现 Bellman-Ford算法原理代码实现SPFA优化SPFA代码实现 多元最短路径Floyd-Warshall算法原理代码实现 单源最短路径 &#x1f680;最短路径&#xff1a;从图G的某个顶点出发到达另一个顶点的最短路径&#xff0c;其中最短是指…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...