本文作者 黄忠(AnySQL)

日志是数据库的重要组成部份,按顺序以增量的方式记录了数据库上所有的操作,日志模块的设计对于数据库的可靠性、稳定性和性能都非常重要。 可靠性方面,在有一个数据文件的基础全量备份后,对运行中的数据库来说,日志文件的重要性大于数据文件,只要操作记录到日志中并完成落盘,就等于操作完成,无须等待数据文件落盘。因为日志的顺序和增量方式,使得数据库的增量实时备份(包括备库)成为可能,更可以使用异步、同步或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分钟入门
  • 云数据库POLARDB优势解读系列文章之②——高性价比
  • 云数据库POLARDB优势解读系列文章之③——分钟级弹性
  • 云数据库POLARDB优势解读系列文章之④——物理复制
  • 云数据库POLARDB优势解读系列文章之⑤——会话读一致性

原文链接

深入解读阿里云数据库POLARDB核心功能物理复制技术相关推荐

  1. 2018技术卓越奖发布 阿里云数据库POLARDB获最佳创新产品奖

    近日,由国内权威数据库技术社区ITPUB,IT垂直门户IT168联合主办,IT168 CIO/CTO俱乐部协办的<匠心独运 砥砺前行--2018技术卓越奖>评选结果正式揭晓,阿里云获得20 ...

  2. 阿里云数据库POLARDB使用方法详细介绍

    阿里云数据库POLARDB使用方法介绍 POLARDB是阿里云自研的下一代关系型云数据库,有三个独立的引擎,分别可以100%兼容MySQL.100%兼容PostgreSQL.高度兼容Oracle语法, ...

  3. 详细解读阿里云开源PolarDB总体架构和企业级特性

    在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云 PolarDB 内核技术专家 北侠带来了主题为<PolarDB 总体架构设计和企业级特性>的精彩演讲.主要分享了存储计算 ...

  4. 阿里云数据库POLARDB技术沙龙火热报名中,李飞飞,曹伟 众大神齐到场,200个席位先到先得!...

    本次沙龙将结合RDS云数据库技术架构的演化,分享阿里云自研云原生数据库的产品架构和技术创新点,并深度剖析POLARDB在SQL并发性能.多活高可用.读写分离延迟.四维弹性.快照备份和查询加速等应用场景 ...

  5. 使用ADAM将Oracle数据库迁移至阿里云数据库PolarDB

    背景 什么是PolarDB? 以下内容引用自阿里云官方网站: 阿里云自研的云原生关系型数据库PolarDB有三个独立的引擎,分别100%兼容MySQL.100%兼容PostgreSQL.高度兼容Ora ...

  6. 阿里云数据库开源发布:PolarDB HTAP的功能特性和关键技术

    简介:在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云 PolarDB 内核技术专家严华带来了主题为<PolarDB HTAP详解>的精彩演讲.在PolarDB存储计算分 ...

  7. 阿里云自研新一代企业云数据库POLARDB背后的技术

    从2008年到2018年,阿里巴巴的数据库技术已经发展了10年的时间,10年的时间从AliSQL到RDS,再到自研POLARDB,阿里巴巴数据库技术得到了极大的提升.那么在阿里云自研新一代企业云数据库 ...

  8. 阿里云的PolarDB要开源了?这个数据库到底强在哪?

    去年年末中国电子学会正式公布了2020年中国电子学会科学技术奖名单, 阿里云自主研发的云数据库PolarDB,获得科技进步一等奖. (左四为PolarDB项目的负责人李飞飞) 这不是阿里去第一次获得这 ...

  9. “宝拉”快跑!阿里云发布超高性能云数据库POLARDB

    老孙看过一部很有意思的德国电影,叫做<罗拉快跑>,故事讲得是为了筹集男票遗失的走私赃款,拯救他随时会被黑帮大哥杀死的性命,罗拉必须在20分钟内得到10万马克,于是她狂奔在求助的路上,完成了 ...

最新文章

  1. 深度学习未来的三种方式
  2. idea本地跑如何看gc日志_不可思议,竟然还有人不会查看GC垃圾回收日志?
  3. arcgis python工具-ArcGIS使用Python脚本工具
  4. opencv python 中cv2.putText()函数的用法
  5. epoll 版 高并发服务器
  6. h5比html新增加的标签,HTML5(H5)新增属性和标签
  7. 单元测试线程代码的5个技巧
  8. 玩转算法之面试 第八章-递归与回溯
  9. python---aiohttp库
  10. NSArray和NSString的联合使用
  11. Linux学习笔记---记一次rootfs根文件系统下载时掉进的大坑
  12. 独家!币安被盗原因找到了!7074 枚比特币竟是这样丢掉的
  13. 高效的设计可视化UI
  14. 毕设题目:Matlab水果识别分级
  15. 关于超星脚本出现乱码问题
  16. LXM音频处理软件 使用说明书
  17. html新建文件夹,JS实现新建文件夹功能
  18. ERROR 1366 (HY000): Incorrect string value: ‘\xE8\xB5\xB5 \xE9\x9B...‘ for column ‘s_name‘ at row 1
  19. 学习汇编语言的重要性
  20. DNS总是出现问题怎么办?

热门文章

  1. PHP 模板引擎SMARTY 原理
  2. 全链路设计师是什么?如何打造全链路设计师?
  3. 本人实现的视频翻译字幕并导出srt
  4. Galileo新版SD卡系统无法启动问题研究 [精华]
  5. 新视野大学英语(第2版)第4册答案
  6. 什么是冷钱包、热钱包?
  7. 玩转人工智能中的机器学习之精品课程
  8. 生产环境下nginx代理跨域解决
  9. 空间向量绕任一向量旋转计算
  10. 微信小程序/h5图片拼接出现白线问题