深入解读阿里云数据库POLARDB核心功能物理复制技术
来源:SegmentFault
时间:2023-02-24 11:00:19 188浏览 收藏
IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《深入解读阿里云数据库POLARDB核心功能物理复制技术》,聊聊MySQL、数据库、性能,我们一起来看看吧!
日志是数据库的重要组成部份,按顺序以增量的方式记录了数据库上所有的操作,日志模块的设计对于数据库的可靠性、稳定性和性能都非常重要。 可靠性方面,在有一个数据文件的基础全量备份后,对运行中的数据库来说,日志文件的重要性大于数据文件,只要操作记录到日志中并完成落盘,就等于操作完成,无须等待数据文件落盘。因为日志的顺序和增量方式,使得数据库的增量实时备份(包括备库)成为可能,更可以使用异步、同步或Raft多数等方式通过保护日志来保护所有的数据。
稳定性方面,日志的增量模式减少了需要写出的数据量,日志的顺序写对于IO操作十分友好,可以充分节约寻道时间(机械硬盘)和写入缓存,使得日志的写操作可以十分平稳,在面对高并发的事务时,不易出现剧烈的抖动,从而得到高的稳定性和性能。按照日志的组织形式,可以分为物理日志和逻辑日志,物理日志使用更偏向底层数据块操作的方式来描述变更,逻辑日志则偏向于使用记录镜像或SQL语句的方式来描述变更,事务引挚一般使用物理日志的模式来记录事务的底层操作,而非事务引挚则一般使用逻辑日志的方式。
用编程语言来打比方的话,物理日志相当于使用汇编语言来记录了操作,而逻辑日志则相当于使用Go/Python等级别的语言来记录操作,物理日志相比逻辑日志具有更高的可靠性、稳定性和性能。回顾数据库的历史,商业数据库都只支持物理日志,从来没有逻辑日志的说法。MySQL因为其上下分层(SQL层和引挚层)的设计导致事务存贮引挚层必须有独立的物理日志,以及多引挚支持的原因,必须在SQL层设计逻辑日志以透明化不同存储引挚(主备可以不同引挚)的支持,形成了一个双日志的现状,对MySQL的稳定性和性能带来了极大的困难和挑战。
物理日志因其格式比较底层,使其非常难以创建只读实例,并且从只读实例切换为读写实例需要比较长的时间,可以参考Oracel数据库的发展历程,长久以来一直没有支持随时只读的备库,将备库切换为主库需要极期严格的步骤,需要比较长的时间,比较难以实现自动化,无法轻松实现互联网读扩展流量扩展的需求。而逻辑日志因其格式比较上层,使其非常容易创建只读实例,从只读实例转换为读写实例可以在秒级完成,并形成了一整套的增量数据订阅消费。MySQL在享受逻辑复制好处时,也承受了逻辑复制带来的一些限制:
存储引挚层难以直接产生逻辑日志,为了数据的一致性,在物理日志和逻辑日志之间引入了XA(2PC)机制,给稳定性和性能带来了极大的限制和挑战,导致事务处理性能和传统商业数据库相比有较大差距,基于物理日志则差距极小。
同一事务的MySQL逻辑日志需要连续写出,因此无法支持较大的事务操作,过大的事务会导致操作失败。基于物理日志,同一个操作的日志可以分段(事务开始、操作1、操作2、事务提交)写出,因此可以支持大事务操作。
MySQL现有逻辑日志保存了整条记录的前后镜象,造成逻辑日志写入量较大增加IO压力,易引起性能下降和抖动。物理日志只记录变化字段,格式紧凑以减少总日志量,具备较好的IO性能,不易引起性能下降和抖动,肯有更高的性能和稳定性。
MySQL逻辑日志,在回入时需要重新经过SQL层代码,执行路径较长,并且不易并行处理,易造成备库时延,即逻辑日志产生的速度超过回放的速度;物理日志因包含完整事务信息,更易用事务一致性实现并行回放,可极大提升备库恢复的速度,做到高压力下主备ms级时延。如下图:
MySQL逻辑日志,不包含事务信息,无法做连续性检测,可以从任意点开始恢复,不熟悉不专业的操作容易,造成问题;物理日志包含完整事务信息,可以做连续性检测,会自动识别上一次的中断点,减少人工判断操作,可有效防止人为误操作。
因此基于逻辑复制的MySQL在大表加字段、建索引等操作上,主备复制的体验非常不够好。POLARDB在充分认识到MySQL逻辑复制的优缺点后,选择以物理复制为基础实现复制节点(Replica),提升了主备复制的效率和体验,为广大客户提供了稳定、可靠、高性能能的只读节点,引领了新一代复制技术的发展。
相关文章:
云数据库POLARDB优势解读系列文章之①——10分钟入门
https://yq.aliyun.com/article...
云数据库POLARDB优势解读系列文章之②——高性价比
https://yq.aliyun.com/article...
云数据库POLARDB优势解读系列文章之③——分钟级弹性
https://yq.aliyun.com/article...
云数据库POLARDB优势解读系列文章之④——物理复制
https://yq.aliyun.com/article...
云数据库POLARDB优势解读系列文章之⑤——会话读一致性
https://yq.aliyun.com/article...
以上就是《深入解读阿里云数据库POLARDB核心功能物理复制技术》的详细内容,更多关于mysql的资料请关注golang学习网公众号!
-
499 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
101 收藏
-
475 收藏
-
266 收藏
-
273 收藏
-
283 收藏
-
210 收藏
-
371 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习