gh-ost

news2024/11/13 18:00:58

优质博文:IT-BLOG-CN

一、gh-ost的作用

gh-ost是由Github提供的Online DDL工具,使用binlog代替之前的触发器做异步增量数据同步,从而降低主库负载。

基于触发器的Online DDL工具原理:
【1】根据原表结构执行alter语句,新建一个更新表结构之后的表,称为幽灵表,对用户是透明的。
【2】将原表数据全量拷贝至幽灵表。
【3】将增量数据同步到幽灵表,也就是Online的核心。最开始办法是在源表上增加几个触发器,例如当源表执行INSERTUPDATEDELETE语句,就把这些操作通过触发器同步到幽灵表上,这样在幽灵表上执行的语句和源表的语句就属于同一个事务,显然这样会影响主库的性能。后面出现了异步的模式,使用触发器把对源表的操作保存到一个Changelog表中,不真正的去执行,专门有一个后台的线程从Changelog表读取数据应用到幽灵表上。这种方式一定程度上缓解了主库的压力,但是保存到Changelog表也同样是属于同一个事务中,对性能也有不小的影响。
【4】拷贝和同步完成之后,锁定源表并交换表名,幽灵表替换源表。
【5】删除源表,完成Online DDL

触发器同步增量数据的缺点:
【1】Triggers, overhead: 触发器是用存储过程的实现的,就无法避免存储过程本身需要的开销。
【2】Triggers, locks: 增大了同一个事务的执行步骤,更多的锁争抢。
【3】Trigger based migration, no pause: 整个过程无法暂停,假如发现影响主库性能,停止Online DDL,那么下次就需要从头来过。
【4】Triggers, multiple migrations: 他们认为多个并行的操作是不安全的。
【5】Trigger based migration, no reliable production test: 无法在生产环境做测试。
【6】Trigger based migration, bound to server: 触发器和源操作还是在同一个事务空间。

gh-ost放弃了触发器,使用binlog来同步。gh-ost作为一个伪装的备库,可以从主库/备库上拉取binlog,过滤之后重新应用到幽灵表上。

gh-ost首先连接到主库上,根据alter语句创建幽灵表,然后作为一个”备库“连接到其中一个真正的备库上,一边在主库上拷贝已有的数据到幽灵表,一边从备库上拉取增量数据的binlog,然后不断的把binlog应用回主库。图中cut-over是最后一步,锁住主库的源表,等待binlog应用完毕,然后替换gh-ost表为源表。gh-ost在执行中,会在原本的binlog event里面增加以下hint和心跳包,用来控制整个流程的进度,检测状态等。这种架构带来诸多好处,例如:
【1】整个流程异步执行,对于源表的增量数据操作没有额外的开销,高峰期变更业务对性能影响小。
【2】降低写压力,触发器操作都在一个事务内,gh-ost应用binlog是另外一个连接在做。
【3】可停止,binlog有位点记录,如果变更过程发现主库性能受影响,可以立刻停止拉binlog,停止应用binlog,稳定之后继续应用。
【4】可测试,gh-ost提供了测试功能,可以连接到一个备库上直接做Online DDL,在备库上观察变更结果是否正确,再对主库操作,心里更有底。
【5】并行操作,对于gh-ost来说就是多个对主库的连接。

二、云数据库场景

用户没有Super权限,因此使用过程中要加上–assume-rbr,gh-ost会认为binlog本身就是row模式,不会再去修改。阿里云RDS上的binlog默认也是row模式,所以不存在问题。binlog的三种模式

其它权限,主要是REPLICATION SLAVEREPLICATION CLIENT可以拉取binlog,也可以获得。

无法连接到备库拉取binlog。备库通常对用户来说是透明的,所以gh-ost需要直接连接到主库上去,这可能会增大对主库的负载。使用的时候需要增加–allow-on-master–assume-master-host。官方推荐的方式也是连接到其中一个备库,因为会有一些压力较大的SELECT操作,放在备库是最好的。几种连接模式如下图所示:

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

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

相关文章

抖音矩阵系统源码搭建,矩阵系统贴牌,矩阵工具开源

1. 抖音短视频矩阵系统 抖音短视频矩阵系统,是指通过抖音平台,以矩阵的形式进行短视频创作、发布和传播的一种模式。它以多样化的内容、丰富的表现形式、高度的专业化和协同性,吸引了大量用户和创作者的关注。 2. 短视频矩阵系统的优势 2.1 …

从技术打磨到产品验证:读《程序员修炼之道》的务实之道

在编程世界里,技术的打磨往往像是工匠雕琢作品,但若无法转化为产品的成功,所有的精致都不过是空中楼阁。读《程序员修炼之道》时,我深刻意识到,务实不仅仅是技术的选择,更是产品迭代和商业模式成功的关键。…

C# .net6 开发数据采集软件(一)

功能: 数据采集:采集任务 数据分析:数据可视化 其他功能:数据上传、数据下拉、软件更新 软件设置:PLC配置、任务配置、软件配置、可视化配置 更多功能:其他软件的入口,或者小工具的使用。比…

打印机无法打印是怎么回事_打印机无法打印多种解决方法

打印机无法打印是怎么回事?我们在使用打印机的时候,可能会遇到打印机无法打印的问题,该问题原因有很多。下面小编就教大家打印机无法打印多种解决方法。 打印机无法打印多种解决方法: 打印机无法打印解决方法一:纸张问…

iOS 超强插件注入神器,Trollfools迎来二次进化

长期以来,注入插件是越狱iPhone的专利。对巨魔玩家来说,越狱用户是如同“上游供应链”一样的存在。 很多增强版的APP,其实都是越狱玩家制作、分享的。直到Trollfools诞生,才彻底扭转了这一现状。 Trollfools是什么?简…

吴津雨银洁刘雅雯获得国际超模大赛四川总决赛网络组三甲

9月8日众人期盼已久的都江堰杯2024国际超模大赛四川总决赛在三遗之城都江堰落下帷幕。国际超模大赛已经举办第12个年头,每年为时尚界、模特界输送无数的优秀时尚模特人才,让世界超模中出现更多的中国面孔。大赛在全球已经布局多个国家及地区,…

攻防世界---->Windows_Reverse1

学习笔记。 前言:不会,代码越简洁,越难受 T ^ T 下载 查壳。 UPX脱壳。 此题脱壳后的程序,是不能运行的。 网上wp,说是因为作者采用了ASLR(地址随机化) 解决方法:一:用XP运行调试。 方法二&a…

基于单片机汽车驾驶防瞌睡防疲劳报警器自动熄火设计

文章目录 前言资料获取设计介绍功能介绍设计程序具体实现截图设计获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对…

【算法竞赛】栈

栈的特点是"先进后出"。 栈在生活中的原型有:坐电梯,先进电梯的被挤在最里面,只能最后出来;一管泡腾片,最先放进管子的药片位于最底层,最后被拿出来。 栈只有唯一的出入口,从这个口进入,也从这个口弹出,这是它与队列最大的区别。 队列有一个入…

李宏毅机器学习2023HW12—Reinforcement Learning强化学习

文章目录 TaskBaselineSimpleMedium Baseline—Policy GradientStrong Baseline——Actor-CriticBoss Baseline—Mask Task 实现深度强化学习方法: Policy GradientActor-Critic 环境:月球着陆器 Baseline Simple 定义优势函数(Advantage function)为执行完ac…

传统到AI 大数据分析的演变,颠覆智慧水电的未来?

传统到AI 大数据分析的演变,颠覆智慧水电的未来? 前言传统到AI 大数据分析的演变 前言 水电作为一种重要的能源形式,一直在我们的生活中扮演着至关重要的角色。而如今,随着科技的飞速发展,智慧水电和 AI 大数据应用的…

服务器安全,你必须知道的六个知识点

服务器安全 如今没有什么是安全的。各种系统安全漏洞的数量呈爆炸式增长。令人担忧的主要原因之一是服务器安全性。 接下来,就如何提升服务器安全,写几点见解。 虽然很多企业在服务器的安全性方面做了足够多,但是,黑客仍然能够…

Java项目实战II基于Java+Spring Boot+MySQL的卓越导师双选系统设计与实现(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者 一、前言 在当今高等教育环境中,师生之间的有效沟通与匹配对于促进学生发展、提升教学质量至关重要…

蓝桥杯—STM32G431RBT6(ADC数模转换,从原理到应用)

一、什么是ADC? ADC(Analog-to-Digital Converter)即模数转换器。它是一种将模拟信号转换为数字信号的电子器件。在电子系统中,ADC 起着至关重要的作用,它能将连续变化的模拟量(如电压、电流等)…

openstack中的rabbitmq

基本概念 基础介绍 exchange:用于分发信息,有direct、fanout、topic、headers; binding:exchange、queue之间的虚拟连接,由一个或者多个routing key组成; queues:用来暂存消息,供…

【工具】Windows|两款开源桌面窗口管理小工具Deskpins和WindowTop

总结 Deskpins 功能单一,拖到窗口上窗口就可以置顶并且标记钉子标签,大小 104 KB,开源位置:https://github.com/thewhitegrizzli/DeskPins/releases WindowTop 功能完善全面强大,包括透明度、置顶、选区置顶等一系列功…

API安全推荐厂商瑞数信息入选IDC《中国数据安全技术发展路线图》

近日,全球领先的IT研究与咨询公司IDC发布报告《IDC TechScape:中国数据安全技术发展路线图,2024》。瑞数信息凭借其卓越的技术实力和广泛的行业应用,被IDC评选为“增量型”技术曲线API安全的推荐厂商。 IDC指出,数据安…

Python 如何调用讯飞星火大模型API

1 讯飞星火简介 讯飞星火是科大讯飞推出的一款先进的人工智能大模型,它具备强大的语言理解和知识问答能力,能够在多种场景中提供智能化服务。2024年6月27日,科大讯飞发布了讯飞星火大模型V4.0版本,全面对标GPT-4 Turbo。现有的模…

【JavaScript】LeetCode:41-45

文章目录 41 排序链表42 合并k个升序链表43 LRU缓存44 二叉树的中序遍历45 二叉树的最大深度 41 排序链表 递归 归并排序找到链表中心点,从中心点将链表一分为二。奇数个节点找中心点,偶数个节点找中心左边的点作为中心点。快慢指针找中心点&#xff0c…

thinkPHP 8.0.4 安装

windows 上安装最新版 thinkPHP8.0.4 下载phpStudy V8.1:小皮面板安装Composer2.x,Composer是PHP的一个依赖管理工具,主要功能包括依赖管理、版本控制、自动加载、扩展开发以及集成其他工具。安装 php8.0.2 4. 网站-管理-compose&#xff0c…