73 mysql replication 集群的交互

news2025/3/10 22:28:23

前言

新建两个数据库, 分别为 192.168.220.132:3001, 192.168.220.132:3002

设置 192.168.220.132:3001 为 master, 192.168.220.132:3002 为 slave 

 

配置文件如下

9d885a196006e67a4fc79b880ce46377.png

 

然后使用 mysqld --initialize 来初始化 data 目录, 以及相关基础数据库 

这里会为 root 账户创建一个随机的密码, 用于后面的登录 

444b8eaf15735ff021b97d826c013cb1.png

 

然后是修改 root 的密码信息, 可访问客户端的信息 

612d9ba4be242edd816503f3a7762383.png

 

master 和 slave 启动好了之后, 在 slave 上面执行如下命令, 配置 master 的相关信息 

change master to master_host='192.168.220.132', master_port=3301, master_user='root', master_password='root', master_log_file='mysql-master.000006', master_log_pos=154;
start slave;
show slave status;

 

假设我们这里测试数据表如下 

CREATE TABLE `tz_test_02` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `field1` varchar(128) DEFAULT NULL,
  `field2` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE,
  KEY `field_1` (`field1`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

 

基础数据如下 

391d1634f6d0973216aa6cdb6fc87e1b.png

 

 

master 这边 binlog 的处理

我们这里测试执行 sql 如下, 我们这里 着重关注第二条 insert 语句的相关处理 

delete from tz_test_02 where id = 11;
INSERT INTO `tz_test_02`(`id`, `field1`, `field2`) VALUES (11, 'field11', '11');

 

在提交事务的时候, 会唤醒 BinlogSender 这边的相关逻辑处理 

909bcd9196cedbb2d7d8289125c58435.png

 

然后 Binlog_sener 这边被唤醒, 开始处理发送 binlog 的相关处理 

901217f849ffa5b024c010b07c043f49.png

 

然后这里会遍历新增的 event, 将需要传递的 event 传输到 slave 

这里会依次遍历几个 event, 类型分别为 Anonymous_Gtid, Query, Table_map, Write_rows, Xid

这里的 WRITE_ROWS_EVENT 对应的 position 为 8889

3f1ac8a95e614dd9bbd8532ab13a72dc.png

 

然后 master 的 binlog 中信息如下, 可以看到 8889 对应的 event 为 WRITE_ROWS_EVENT

98bfdfaee959f3a62aabbcb31cf5cffe.png

 

 

slave 这边 binlog 的处理

然后 slave 这边会收到相关的几个 event, Anonymous_Gtid, Query, Table_map, Write_rows, Xid 这里我们主要关心 WRITE_ROWS_EVENT

这里将接收过来的 WRITE_ROWS_EVENT 添加到 Relay_log_info 中, 其是对应于一段带缓冲的文件映射

6fd2045c7a3037a0269e993dbd7963c0.png

 

slave 这边的 relay_log 的 apply 的处理如下, 相当于拿到对应的 binlog 之后, 处理相关的业务处理, 对于我们这里的 WRITE_ROWS_EVENT 就是根据目标语句, 或者Write_rows 新增业务记录 

f52f861246d8cf8013e7e4934f029961.png

 

 

slave 这边 handleSlaveSql 的线程

slave reapply relay_log 的线程如下, 只负责处理该部分的业务 

04d9ae9dbb6ef057d569c81fe3d2c881.png

 

该线程是在 “start slave” 命令的处理中执行的, 新建了 handleSlaveSql 的线程 

377a82e544ddbbcd39b5eee45dd5b814.png

 

 

另外可以看出 这个 replication 过程时候近乎实时的 

中间空隙是 master 这边遍历发送 binlog, slave 这边接受 binlog, 并执行 

 

 

 

 

 

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

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

相关文章

Unity-Mirror网络框架-从入门到精通之Benchmark示例

文章目录 前言什么是Benchmark?Benchmark 简要说明Benchmark示例BenchmarkNetworkManagerMonsterMovementPlayerMovementInterestManagement性能指标 BenchmarkIdle示例BenchmarkPrediction示例BenchmarkStinkySteak示例 前言 在现代游戏开发中,网络功能…

反射--反射机制

目录 一 java 1.反射的引入: 2.反射机制 1) 反射会生成一个类对象------类型class类型 2)【加载阶段】class类型相当于一面镜子------透过class 反射出 真正的类的结构 3)反射机制原理---编译阶段---加载阶段---运行阶段 2.…

【论文笔记】LongLoRA: Efficient Fine-tuning of Long-Context Large Language Models

🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 基本信息 标题: LongLoRA: Efficient Fine…

LabVIEW四边形阻抗继电器

基于LabVIEW开发了四边形阻抗继电器,该系统主要应用于电力系统的距离保护中。四边形阻抗继电器在克服短路点过渡电阻的影响及躲避负荷阻抗方面展现出优良的特性。通过LabVIEW图形化编程环境实现的该系统,具备用户友好界面和简便的操作流程,有…

计算机网络--路由器问题

一、路由器问题 1.计算下一跳 计算机网络--根据IP地址和路由表计算下一跳-CSDN博客 2.更新路由表 计算机网络--路由表的更新-CSDN博客 3.根据题目要求给出路由表 4.路由器收到某个分组,解释这个分组是如何被转发的 5.转发分组之路由器的选择 二、举个例子 …

Python安装(新手详细版)

前言 第一次接触Python,可能是爬虫或者是信息AI开发的小朋友,都说Python 语言简单,那么多学一些总是有好处的,下面从一个完全不懂的Python 的小白来安装Python 等一系列工作的记录,并且遇到的问题也会写出&#xff0c…

2025 年前端新技术如何塑造未来开发生态?

开发领域:前端开发 | AI 应用 | Web3D | 元宇宙 技术栈:JavaScript、React、ThreeJs、WebGL、Go 经验经验:6 年 前端开发经验,专注于图形渲染和 AI 技术 开源项目:AI智简未来、晓智元宇宙、数字孪生引擎 大家好&#x…

1-markdown转网页样式页面 --[制作网页模板] 【测试代码下载】

markdown转网页 将Markdown转换为带有样式的网页页面通常涉及以下几个步骤:首先,需要使用Markdown解析器将Markdown文本转换为HTML;其次,应用CSS样式来美化HTML内容。此外,还可以加入JavaScript以增加交互性。下面我将…

数据逻辑(十)——逻辑函数的两种标准形式

目录 1 最小项和最大项 1.1 最小项 1.2 最大项 2 逻辑函数的最小项之和 3 逻辑函数的最大项之积 4 最小项之和以及最大项之积的联系和应用场景 4.1 最小项之和以及最大项目之积的联系 4.2 最小项之和以及最大项之积的应用场景 逻辑函数的两种标准形式分别是以最小项之和…

【Ubuntu使用技巧】Ubuntu22.04无人值守Crontab工具实战详解

一个愿意伫立在巨人肩膀上的农民...... Crontab是Linux和类Unix操作系统下的一个任务调度工具,用于周期性地执行指定的任务或命令。Crontab允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。这些任务可以按照分钟、小时、日…

鸿蒙Flutter实战:15-Flutter引擎Impeller鸿蒙化、性能优化与未来

Flutter 技术原理 Flutter 是一个主流的跨平台应用开发框架,基于 Dart 语言开发 UI 界面,它将描述界面的 Dart 代码直接编译成机器码,并使用渲染引擎调用 GPU/CPU 渲染。 渲染引擎的优势 使用自己的渲染引擎,这也是 Flutter 与其…

UniApp | 从入门到精通:开启全平台开发的大门

UniApp | 从入门到精通:开启全平台开发的大门 一、前言二、Uniapp 基础入门2.1 什么是 Uniapp2.2 开发环境搭建三、Uniapp 核心语法与组件3.1 模板语法3.2 组件使用四、页面路由与导航4.1 路由配置4.2 导航方法五、数据请求与处理5.1 发起请求5.2 数据缓存六、样式与布局6.1 样…

法拉利F80发布 360万欧元限量799辆 25年Q4交付

今日,法拉利旗下全新超级跑车——F80正式发布,新车将作为法拉利GTO和法拉利LaFerrari(参数丨图片) Aterta的继任者,搭载V6混合动力系统,最大综合输出功率高达1632马力。售价360万欧元,全球限量生…

【pytorch练习】使用pytorch神经网络架构拟合余弦曲线

在本篇博客中,我们将通过一个简单的例子,讲解如何使用 PyTorch 实现一个神经网络模型来拟合余弦函数。本文将详细分析每个步骤,从数据准备到模型的训练与评估,帮助大家更好地理解如何使用 PyTorch 进行模型构建和训练。 一、背景 …

电脑steam api dll缺失了怎么办?

电脑故障解析与自救指南:Steam API DLL缺失问题的全面解析 在软件开发与电脑维护的广阔天地里,我们时常会遇到各种各样的系统报错与文件问题,其中“Steam API DLL缺失”便是让不少游戏爱好者和游戏开发者头疼的难题之一。作为一名深耕软件开…

Conda 安装 Jupyter Notebook

文章目录 1. 安装 Conda下载与安装步骤: 2. 创建虚拟环境3. 安装 Jupyter Notebook4. 启动 Jupyter Notebook5. 安装扩展功能(可选)6. 更新与维护7. 总结 Jupyter Notebook 是一款非常流行的交互式开发工具,尤其适合数据科学、机器…

组合的能力

在《德鲁克最后的忠告》一书中,有这样一段话: 企业将由各种积木组建而成:人员、产品、理念和建筑。积木的设计组合至少和其供给一样重要。……对于一切程序、应用软件以及附件来说,重要的是掌握将已有的软件模块组合的能力&…

去掉el-table中自带的边框线

1.问题:el-table中自带的边框线 2.解决后的效果: 3.分析:明明在el-table中没有添加border,但是会出现边框线. 可能的原因: 由 Element UI 的默认样式或者表格的某些内置样式引起的。比如,<el-table> 会通过 border-collapse 或 border-spacing 等属性影响边框的显示。 4…

大模型与EDA工具

EDA工具&#xff0c;目标是硬件设计&#xff0c;而硬件设计&#xff0c;您也可以看成是一个编程过程。 大模型可以辅助软件编程&#xff0c;相信很多人都体验过了。但大都是针对高级语言的软件编程&#xff0c;比如&#xff1a;C&#xff0c;Java&#xff0c;Python&#xff0c…

【HarmonyOS之旅】基于ArkTS开发(一) -> Ability开发一

目录 1 -> FA模型综述 1.1 -> 整体架构 1.2 -> 应用包结构 1.3 -> 生命周期 1.4 -> 进程线程模型 2 -> PageAbility开发 2.1 -> 概述 2.1.1 ->功能简介 2.1.2 -> PageAbility的生命周期 2.1.3 -> 启动模式 2.2 -> featureAbility接…