记一个mysql 主从切换的实验记录

news/2024/10/30 19:35:25/文章来源:https://www.cnblogs.com/sunjiwei/p/18512884
一、前言
msyql 切换主库一般都是用高可用方案,例如MHA,MGR,高可用方案可以自动切主,但是MHA的failover功能无法把旧主自动挂到新主上作为从库使用,所以发生failover后,还需要手动把旧的主库作为备库挂到新的主库上。此时常规操作就是备份新主库,然后应用到旧主库上,然后再重新搭建主从。但是如果数据量非常大(例如TB级数据),备份就会耗费大量的时间和磁盘空间,这时候最佳方案就是不备份,利用gtid原理和binlog直接把旧的主库挂到新的主库上搭建好主从(下文会详细介绍)

还有就是没有用高可用架构的情况,只有主从集群,如果遇到需要切换的情况(比如物理机需要停机,日常计划中维护),这时也需要手动切换,此时也可以不用备份,利用gtid原理和binlog直接把旧的主库挂到新的主库上搭建好主从。注意,这种方式的切换必须要开启gtid,否则change master to 时需要自己手动去找对应的binlog file 和 position号。

二、手动切换操作实验
现在我们给两个mysql实例起名叫A,B,A是主库,B是备库

1、把原主从集群断开,在从库(B实例)上操作

stop slave;
reset slave all;

2、查看原主库(A实例)binlog情况

3、查看原备库(B实例)binlog情况


3cb75db8-6bf6-11ee-b1ce-0050569149b4:1-142 这个是模拟切换过程中向新的主库(B实例)写入数据,B实例自己产生的gtid事务。

4、把老的主库(A实例)挂到新的主库(B实例)上面,在A实例上操作

change master to 
master_host='192.168.167.133',
master_user='repl',
master_password='111222',                            
master_port=3306,
MASTER_AUTO_POSITION=1;start slave;show slave status\G  查看没有问题

5、查看新从库(A实例)binlog情况


可以看到B实例上的事务3cb75db8-6bf6-11ee-b1ce-0050569149b4:1-142 也都被接收并写入A实例了。

至此,手动切换实验完成,下面我们看下master_auto_position 这个参数的原理

三、master_auto_position 参数原理
我们知道开启gtid事务后,就不用指定file 和 position 号了,master_auto_position这个参数会自动去找主库上的事务,那它是怎么找的呢?下面是官网的描述:


这句话意思是,在执行change master to 命令后,从库会发送一个GTID SET,其中包含它已经接收、提交或两者兼而有之的事务,这个gtid set就是show master status;命令结果中的Executed_Gtid_Set字段值。

下面我们来验证下是不是这样:
验证原理是这样:现在A实例是从库,并且已经拥有主库的完整数据,也就是
3ab75db8-6bf6-11ee-b1ce-0050569149b4:1-621664,
3cb75db8-6bf6-11ee-b1ce-0050569149b4:1-142
这些事务,如果我们现在把主从断开,然后把A实例上的事务设置成3ab75db8-6bf6-11ee-b1ce-0050569149b4:1-621664这个,然后把A实例再挂到B实例上作为从库,看下是否A实例从3ab75db8-6bf6-11ee-b1ce-0050569149b4:1-621664 这些事务之后去自动找对应的gtid事务。如果是从3ab75db8-6bf6-11ee-b1ce-0050569149b4:1-621664 这写事务之后开始寻找,那么 3cb75db8-6bf6-11ee-b1ce-0050569149b4:1-142 这些事务都会再执行一遍,这样即可验证官网所说。

由于上面已经切换过主从,现在A实例是备库,B实例是主库

1、把现在的主从再断开,在A实例上操作

stop slave;
reset slave all;

2、在A实例上重新设置事务

reset master;
set @@GLOBAL.GTID_PURGED='3ab75db8-6bf6-11ee-b1ce-0050569149b4:1-621664';
show master status;# 这里注意,Executed_Gtid_Set 这个值没法直接设置,但是可以设置GTID_PURGED值,在Executed_Gtid_Set值为空时,Executed_Gtid_Set值就等于设置的GTID_PURGED值。

3、重新启动从库线程

change master to 
master_host='192.168.167.133',
master_user='repl',
master_password='111222',                            
master_port=3306,
MASTER_AUTO_POSITION=1;start slave;
show slave status \G查看数据发现3cb75db8-6bf6-11ee-b1ce-0050569149b4:1-142 这些事务确实又执行了一遍,即验证master_auto_position 这个参数自动找的位置是Executed_Gtid_Set值的下一个事务号。

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

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

相关文章

银河麒麟系统V10安装mysql5.7

1、cat /proc/version查看系统版本2、官网(https://dev.mysql.com/downloads/mysql/)下载mysql 3、在服务器直接下载压缩包wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar4、创建upload目录存储压缩包 5、cd /upload/,…

macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载

macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载macOS Sonoma 14.7.1 (23H222) Boot ISO 原版可引导镜像下载 2024 年 10 月 28 日,Apple 智能今日登陆 iPhone、iPad 和 Mac。用户现可借助 Apple 智能优化写作,为通知、邮件和消息生成摘要,体验交互更自然、功能更…

macOS Sonoma 14.7.1 (23H222) 正式版发布,ISO、IPSW、PKG 下载

macOS Sonoma 14.7.1 (23H222) 正式版发布,ISO、IPSW、PKG 下载macOS Sonoma 14.7.1 (23H222) 正式版发布,ISO、IPSW、PKG 下载 2024 年 10 月 28 日,Apple 智能今日登陆 iPhone、iPad 和 Mac。用户现可借助 Apple 智能优化写作,为通知、邮件和消息生成摘要,体验交互更自然…

macOS Sequoia 15.1 (24B83) 正式版 ISO、IPSW、PKG 下载

macOS Sequoia 15.1 (24B83) 正式版 ISO、IPSW、PKG 下载macOS Sequoia 15.1 (24B83) 正式版 ISO、IPSW、PKG 下载 iPhone 镜像、Safari 浏览器重大更新和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:macOS Sequoia 15.1 (24B83) 正式版 ISO、IP…

macOS Sequoia 15.1 (24B83) Boot ISO 原版可引导镜像下载

macOS Sequoia 15.1 (24B83) Boot ISO 原版可引导镜像下载macOS Sequoia 15.1 (24B83) Boot ISO 原版可引导镜像下载 iPhone 镜像、Safari 浏览器重大更新和 Apple Intelligence 等众多全新功能令 Mac 使用体验再升级 请访问原文链接:macOS Sequoia 15.1 (24B83) Boot ISO 原版…

Xcode 16.1 (16B40) 发布下载 - Apple 平台 IDE

Xcode 16.1 (16B40) 发布下载 - Apple 平台 IDEXcode 16.1 (16B40) 发布下载 - Apple 平台 IDE IDE for iOS/iPadOS/macOS/watchOS/tvOS/visonOS 发布日期:2024 年 10 月 28 日 Xcode 16.1 包含适用于 iOS 18.1、iPadOS 18.1、Apple tvOS 18.1、watchOS 11.1、macOS Sequoia 1…

实验5:建造者模式

[实验任务一]:计算机组装 使用建造者模式,完成下述任务:计算机组装工厂可以将CPU、内存、硬盘、主机等硬件设备组装在一起构成计算机,计算机的类型可以是笔记本,也可以是台式机。 实验要求: 1.画出对应的类图; 2.提交源代码; 3.注意编程规范。 1、类图 2、源代码 Buil…

084 全局事件总线1

x应该具备两个能力:1.所有组件都能看到x;2.可以调用$on,$off,$emit 全局事件总线(Global Event Bus)是一种在 Vue 应用中实现组件间通信的技术。它可以用于任意组件之间的通信,包括父子组件、兄弟组件以及跨层级的组件。全局事件总线的核心思想是创建一个独立的事件中心,组…

现在做技术博客还有前途吗?

在数字化时代,技术博客作为一种分享知识、经验和见解的平台,曾经是技术爱好者和专业人士的首选。然而,随着自媒体的兴起和信息孤岛现象的出现,许多人开始质疑技术博客的前途。本文将探讨自媒体对技术博客的影响、自然流量的挑战、维护成本以及技术博客的未来前景。一、自媒…

ABAP Dump:CREATE_OBJECT_CLASS_NOT_FOUND

SAP生产机系统拷贝到测试机后,外部系统访问SAP的WEBSERVICE一直报错。 检查后发现表 VEPGENCLASS 中的服务对应的对象类型与生产机不一样,改成生产机一样,错误消失。

C#05-设计模式学习笔记

@目录1.设计模式的七大原则1.单一职责原则2.迪米特法则3.里氏代换原则4.依赖倒置原则5.接口隔离原则6.开闭原则7.合成复用原则8.总结2.创建型模式1.单例模式2.工厂方法模式1.简单工厂模式2.工厂模式3.抽象工厂模式4.生成器模式5.原型模式3.结构型设计模式1.适配器模式行为型设计…

[Azure] 使用 Cosmos DB for NoSQL 的 API

什么是 Azure Cosmos DB for NoSQL? Azure Cosmos DB for NoSQL 是用于处理文档数据模型的原生非关系服务。它可以使用灵活的架构任意存储原生 JSON 文档。数据会自动编制索引,并可使用专为 JSON 数据设计的 SQL 查询语言进行查询。使用适用于常用框架(如 .NET、Python、Jav…