日志是数据库的重要组成部份,按顺序以增量的方式记录了数据库上所有的操作,日志模块的设计对于数据库的可靠性、稳定性和性能都非常重要。 可靠性方面,在有一个数据文件的基础全量备份后,对运行中的数据库来说,日志文件的重要性大于数据文件,只要操作记录到日志中并完成落盘,就等于操作完成,无须等待数据文件落盘。因为日志的顺序和增量方式,使得数据库的增量实时备份(包括备库)成为可能,更可以使用异步、同步或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核心功能物理复制技术的更多相关文章

  1. 深入解读阿里云数据库POLARDB核心功能会话读一致性

    POLARDB架构 我们知道,POLARDB是一个由多个节点构成的数据库集群,一个主节点,多个读节点.对外默认提供两个地址,一个是集群地址,一个是主地址,推荐使用集群地址,因为它具备读写分离功能可以把 ...

  2. 重新定义数据库的时刻,阿里云数据库专家带你了解POLARDB

    摘要:POLARDB是阿里云ApsaraDB数据库团队研发的基于云计算架构的下一代关系型数据库,其最大的特色是计算节点与存储节点分离,借助优秀的RDMA网络以及最新的块存储技术.POLARDB不但满足 ...

  3. 云数据库POLARDB产品解读之二:如何做到高性价比

    现在做任何事情都要看投入产出比,对应到数据库上其实就是性价比.POLARDB作为一款阿里自研数据库,经常被问的问题是:性能怎么样?能不能支撑我的业务?价格贵不贵?很显然,在早期调研阶段,对稳定性.可靠 ...

  4. 阿里云云服务器 ECS和云数据库 PolarDB的简单使用

    阿里云云服务器 ECS和云数据库 PolarDB的简单使用 仅作为记录自己的操作使用,主要是怕自己太久不用都忘了 登录阿里云以后点击控制台 然后找到云服务器ECS,点击进入 在左侧找到实例,点击进入 ...

  5. Future Maker | 领跑亚太 进击的阿里云数据库

    7月31日,阿里云马来西亚峰会在吉隆坡召开,阿里巴巴集团副总裁.阿里云智能数据库事业部总裁李飞飞在演讲中表示:“作为亚太地区第一的云服务提供商,阿里云数据库已为多家马来西亚知名企业提供技术支持,助力企 ...

  6. 选择阿里云数据库HBase版十大理由

    根据Gartner的预计,全球非关系型数据库(NoSQL)在2020~2022预计保持在30%左右高速增长,远高于数据库整体市场. 阿里云数据库HBase版也是踏着技术发展的节奏,伴随着NoSQL和大 ...

  7. 【IT名人堂】何云飞:阿里云数据库的架构演进之路

    [IT名人堂]何云飞:阿里云数据库的架构演进之路 原文转载自:IT168 ​ 如果说淘宝革了零售的命,那么DT革了企业IT消费的命.在阿里巴巴看来,DT时代,企业IT消费的模式变成了“云服务+数据”, ...

  8. 从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库

    开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库. 云数据库 RDS(Relational Database ...

  9. 赋能时空云计算,阿里云数据库时空引擎Ganos上线

    随着移动互联网.位置感知技术.对地观测技术的快速发展,时空信息已从传统GIS行业渗透到大众应用及各行各业.从静态POI(兴趣点)到APP位置信息,从导航电子地图到车辆行驶轨迹,从卫星影像到三维城市建模 ...

随机推荐

  1. 在github上面创建新的分支

    第一步:git branch 查看当前分支情况 git branch //查看当前分支情况 第二步:git branch 分支名,新建一个自己的分支 git branch 分支名 // 新建一个自己的 ...

  2. PHP如何搭建百度Ueditor富文本编辑器

    本文为大家分享了PHP搭建百度Ueditor富文本编辑器的方法,供大家参考,具体内容如下 下载UEditor 官网:下载地址 将下载好的文件解压到thinkphp项目中,本文是解压到PUBLIC目录下 ...

  3. git 实际操作

    1.把文件添加到版本库中. 所有的版本控制系统只能跟踪文本文件的改动 下面先看下demo如下演示: 我在版本库gittest目录下新建一个记事本文件 1.txt 内容如下:1111111 第一步:使用 ...

  4. Linux进阶命令用法

    1.tr命令 可以对来自标准输入的字符进行替换.压缩和删除.它可以将一组字符变成另一组字符 选项 -c或——complerment:取代所有不属于第一字符集的字符: -d或——delete:删除所有属 ...

  5. 三、糖醋鲤鱼(Sweet and sour carp)

    糖醋鲤鱼是用鲤鱼制作的一道山东济南传统名菜,为鲁菜的代表菜品之一 ,色泽金黄,外焦内嫩,酸甜可口,香鲜味美. 菜品历史 <诗经>载:岂食其鱼,必河之鲤.<济南府志>上早有&qu ...

  6. Java中不定项参数(可变参数)的使用

    Java1.5增加了新特性:可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理. 注意事项:   1)不定项参数必须放在参数列表最后一个.   2)不定项参数只能有一个(多 ...

  7. Hadoop 操作常见问题解决

    1. 安全模式下不可操作 提示信息: Hadoop "Cannot create directory .Name node is in safe mode." 解决方法: $ ha ...

  8. 吴恩达机器学习笔记56-多元高斯分布及其在误差检测中的应用(Multivariate Gaussian Distribution & Anomaly Detection using the Multivariate Gaussian Distribution)

    一.多元高斯分布简介 假使我们有两个相关的特征,而且这两个特征的值域范围比较宽,这种情况下,一般的高斯分布模型可能不能很好地识别异常数据.其原因在于,一般的高斯分布模型尝试的是去同时抓住两个特征的偏差 ...

  9. git克隆项目出现remote: HTTP Basic: Access denied

    换新电脑,重新装了git,从gitlab上面拉公司项目,出现了remote: HTTP Basic: Access denied错误,说验证失败,百度很多说了很多答案,最后试了这种可以,成功拉下来项目 ...

  10. IOS微信点击input弹出输入法,关闭后页面留白解决方案

    场景:IOS用微信点击input框弹出输入法后 不管你是输入信息,还是不输入直接点完成关闭输入法,都会导致页面被挤上去后产生留白,从而改变页面布局             解决方法: 给input添加 ...