MySQL复制拓扑4

文章目录

主要内容

  1. 预备知识
    MySQL主从复制是MySQL数据库中常用的一种高可用性和数据备份方案,它可以将主数据库的数据同步到从数据库,从而实现数据的备份和读写分离。下面是MySQL主从复制的详细原理及工程实现:
    主从复制的原理:

主从复制的原理是通过在主数据库上记录所有的数据变更操作(如INSERT、UPDATE、DELETE)并将这些操作记录在二进制日志(Binary Log)中,然后从数据库通过读取主数据库的二进制日志来获取这些数据变更操作,并在从数据库上执行相同的操作,从而保持从数据库和主数据库的数据一致性。

一.启用GUID并配置循环复制

二进制日志坐标只适应于简单的复制结构,对于复杂的比如循环、双向和多源复制,二进制日志坐标就不能唯一标识一个事务了,这个时候必须使用GTID(全局事务标识符)来记录产生更改的事务。

1.其中,UUID用来唯一标识每一个服务器,事务的编号记录了在该服务器上执行的事务的顺序。使用SELECT @@server_uuid\G命令可以查看服务器的UUID,sever1的UUID值显示如下:

代码如下(示例):
select @@server_uuid\G

在这里插入图片描述
在复杂复制拓扑中,必须使用GTID才能唯一标识某一个事务。
下面我们将在三个服务器上启用GTID,并构建循环拓扑,也即将server1设置为server3的slave,在这种结构中,每一个服务器既是master,同时又是slave,在任何一个服务器上的修改,都会同步到其余的两个服务器上。

2.在三个节点上分别操作,先关闭mysqld实例,然后修改my.cnf配置文件,去除gtid-mode=ON和enforce-gtid-consistency两个选项的注释,保存。

代码如下(示例):
systemctl stop mysqld
vim /etc/my.cnf
cat /etc/my.cnf

在这里插入图片描述

3.分别启动三个mysqld实例:

代码如下(示例):
systemctl start mysqld
systemctl status mysqld

在这里插入图片描述

4.在server2和server3上执行stop slave命令以停止从属服务器上的I/O 和SQL 线程。

代码如下(示例):
stop slave;

5.在sever1、server2和server3上分别执行reset master命令,该命令会复位现有的二进制日志文件,并将gtid_executed和gtid_purged设置为空字符串,以便日志文件仅包含使用GTID 的事件。

代码如下(示例):
reset master;
select @@server_uuid\G

在这里插入图片描述

6.在server2和server3上分别执行CHANGE MASTER TO MASTER_AUTO_POSITION=1;和START SLAVE USER=‘repl’ PASSWORD=‘oracle’;恢复前面的三层复制结构,注意这次使用的是GTID。

代码如下(示例):
change master to MASTER_TO_POSITION=1;
start slave user='repl' password='oracle';
show slave status\G

在这里插入图片描述

7.验证复制功能,在server1上删除city表ID大于4060的行;在server2和server3上查看到相同的同步结果,复制成功:

代码如下(示例):
delete from world.city where id>4060;

select id,name 
from world.city
order by id desc
limit 5;

在这里插入图片描述
在这里插入图片描述

8.在server3,检查从属服务器状态:

在这里插入图片描述
可以看到,server3上执行的事务,其事务初始执行位置是在server1。

9.继续,在server1上执行changemaster to命令,更改server1为server3的master,并启动复制:

代码如下(示例):
change master to MASTER_HOST='server3',MASTER_AUTO_POSITION=1;
start slave user='repl' password='oracle';

在这里插入图片描述

10.在server2上删除city表ID大于4050的行:

代码如下(示例):
delete from world.city where id > 4050;

select id,name
from world.city
order by desc
limit 5;

在这里插入图片描述

11.在server1上大于4050的行也被删除,查询server1的gtid_executed变量可以看到该删除操作的初始执行位置是server2(server2的UUID=0469d41c-f7db-11ed-aa03-000c29bd1425):

代码如下(示例):
select id,name from world.city 
order by id desc
limit 5;

select @@global.gtid_executed\G

在这里插入图片描述


总结

以上是今天要讲的内容,学到了MySQL复制拓扑的启用GUID并配置循环复制。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3_2024_7天【回顾上篇watch常见的后两种场景】

随笔:这年头工作不好找咯,大家有学历提升的赶快了,还有外出人多注意身体,没错我在深圳这边阳了,真的绝啊,最尴尬的还给朋友传染了!!! 之前三种的监听情况,监听…

文本识别 OCR 解决方案

Capture2Text 便携式 OCR 工具 Capture2Text 能够使用键盘快捷键快速对屏幕的一部分进行 OCR。 默认情况下,生成的文本将保存到剪贴板。支持中文、英文、法文、德文、日文、韩文、俄文、西班牙文等 90 多种语言。 Capture2Text 是便携式工具,不需要安装…

快速了解FastAPI与Uvicorn是什么?

概念 什么是Uvicorn Python Uvicorn 是一个快速的 ASGI(Asynchronous Server Gateway Interface)服务器,用于构建异步 Web 服务。它基于 asyncio 库,支持高性能的异步请求处理,适用于各种类型的 Web 应用程序。 Uvi…

SEO超级外链工具源码

源码简介 超级外链工具,是一款在线全自动化发外链的推广工具。使用本工具可免费为网站在线批量增加外链,大大提高外链发布工作效率,是广大草根站长们必备的站长工具。 搭建环境 PHP 5.6 安装教程 上传源码压缩包到网站目录并解压即可 首…

Linux安装最新版Docker完整教程

参考官网地址:Install Docker Engine on CentOS | Docker Docs 一、安装前准备工作 1.1 查看服务器系统版本以及内核版本 cat /etc/redhat-release1.2 查看服务器内核版本 uname -r这里我们使用的是CentOS 7.6 系统,内核版本为3.10 1.3 安装依赖包 …

【数据结构(二)】顺序表与ArrayList

❣博主主页: 33的博客❣ ▶文章专栏分类:数据结构◀ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你学更多数据结构知识 目录 1.前言2.定义IList接口3.MyArraylist实现接口3.1定义成员变量与构造方法3.2添加元素3.3…

构建未来数字化世界的统一用户中心产品架构

随着数字化时代的到来,用户数据管理变得愈发复杂,各类应用和服务的涌现使得用户信息分散存储,导致了数据孤岛和体验碎片化的问题。在这样的背景下,统一用户中心产品架构应运而生,为构建数字化世界提供了全新的解决方案…

S7-200 SMART 应用第003期-数字量输入模块接线

概述 S7-200 SMART作为西门子的一款高性价比PLC产品,很多工控电气工程师在选型和电路图设计时,对模块接线并不是非常清楚,为了使大家更好的了解和掌握该部分,本文从CPU本体、数字量输入(DI)、数字量输出(DQ)向大家详细介绍S7-200 SMART 详细的接线和注意事项。 不同型号C…

2023年度总结:允许迷茫,破除迷茫;专注自身,把握当下

0、前言 📜为什么24年已经过了几个月,才提笔写这年度总结呢?毫不羞愧直问我的内心,其实就是懒罢了。直到前几天朋友看到了我去年写的总结,我自己点进那篇总结,完完整整的看了一遍,又翻看我23年…

ideaSSM 网上选课管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 网上选课管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库&#xff…

二分法题集1

1 二分查找 分析: 这是一道很简单的二分法题,定义两个指针和中间值middle,判断middle对应数组值与目标值的大小关系,从而对left和right进行修改。由于太过基础,代码简单基础就不多赘述。 目录 1 二分查找 分析&…

PyQt PySide6零基础入门与项目实战视频教程

目录 课程亮点课程大纲第一章:基础篇 PySide6开发环境安装第二章 控件与布局篇 PySide6常用控件与界面布局使用介绍第三章 信号槽与事件机制第四章 QMainWindow应用篇第五章 样式表qss与自定义控件第六章 图表与曲线第七章 数据库编程第八章 项目实战:高…

FJSP:小龙虾优化算法(Crayfsh optimization algorithm,COA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题(Flexible Job Shop Scheduling Problem,FJSP),是一种经典的组合优化问题。在FJSP问题中,有多个作业需要在多个机器上进行加工,每个作业由一系列工序组成&a…

二叉树的介绍

学习堆排序时先了解下二叉树,因为堆排序中使用了二叉树。 一、二叉树介绍 二叉树(binary tree)树的每个节点最多有2个孩子节点。注意,这里是最多有2个,也可能只有1个,或者没有孩子节点。 二叉树结构如图…

极客时间: 用 Word2Vec, LangChain, Gemma 模拟全本地检索增强生成(RAG)

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

「 典型安全漏洞系列 」11.身份验证漏洞详解

身份验证是验证用户或客户端身份的过程。网站可能会暴露给任何连接到互联网的人。这使得健壮的身份验证机制成为有效的网络安全不可或缺的一部分。 1. 什么是身份验证 身份验证即认证,是验证给定用户或客户端身份的过程。身份验证漏洞使攻击者能够访问敏感数据和功…

RobotFramework测试框架(12)--第三方库

Library 关于射频指南 |机器人框架 (robotframework.org) 使用RF需要使用Library,常用的第三方库如下: 在web浏览器中进行web应用程序测试可以使用的库是 Selenium Library 在内部使用流行的 Selenium 工具的 Web 测试库Browser Library 由 Playwri…

ThingsBoard通过MQTT发送遥测数据

MQTT基础 客户端 MQTT连接 遥测上传API 案例 MQTT基础 MQTT是一种轻量级的发布-订阅消息传递协议,它可能最适合各种物联网设备。 你可以在此处找到有关MQTT的更多信息,ThingsBoard服务器支持QoS级别0(最多一次)和QoS级别1&…

【前沿模型解析】潜在扩散模 1 | LDM第一阶段-感知图像压缩总览

文章目录 0 开始~1 感知压缩的目的2 自回归编码器-解码器生成模型一览2.1 AE 自编码器2.2 VAE 变分自编码器2.3 VQ-VAE2.4 VQ-GAN 3 代码部分讲解总览 0 开始~ 从今天起呢,我们会剖析LDM(潜在扩散模型) 从去年开始,大量的生成模…

蓝桥杯嵌入式(G431)备赛笔记——按键模块设计

目录 cubeMX配置: 代码模板: 最终模板 注意: cubeMX配置: 原理图 引脚配置为上拉模式 定时器 使用定时器3(通用定时器,使用外部晶振,内部时钟),分频系数为80(从0开始则为80-1),则每1s 1m次,定时评率为为10000,对应1s 1m/10000次,频率为10ms每次 一定记得开启…