原标题:UDB高可用数据库内核深度优化

UDB是UCloud提供的云数据库,支持实例级别的高可用。UCloud数据库团队在数据库原生复制的多个方面进行了深度优化,提升UDB高可用数据库的功能和性能。

一、UDB高可用数据库架构

UDB高可用数据库产品以虚拟IP、HAProxy、单节点UDB数据库搭建双节点高可用架构:

双节点的UDB数据库保证数据库数据的全量冗余,同时保证数据库的可用性;

HAProxy在同一时间只连接一个UDB节点,避免多点写入带来的数据冲突问题;

双节点HAProxy保证Proxy的可用性;

虚拟IP在HAProxy发生宕机时通过IP漂移的方式对HAProxy进行切换,用户不需要再次修改IP。

在上述架构中,从节点UDB的数据是否完整、是否与主库保证数据一致性是整个高可用架构的关键,所以用于数据传输的半同步复制起着至关重要的作用。针对原生的半同步复制,UDB数据库作了内核层面的深度优化。

二、UDB数据库深度优化

UDB数据库产品是以开源数据库MySQL Community Server 5.7.16为基线版本,围绕高可用架构做内核深度优化。

复制流程,如上图所示,主要经过如下几个步骤:

MySQL Server执行SQL成功后,记录binlog;

Dump线程读取binlog后,发送到从机IO线程;

IO线程将接收到的binlog记录到relay log中,同时记录接收进度到master.info中;

SQL读取relay log中的日志内容进行复现,同时记录复制日志的进度到relay-log.info中。

我们在原生复制的基础上做了内核的深度优化,针对上述流程中的部分步骤,在功能和性能上做了改进,使得 UDB高可用数据库产品更加稳定。

2.1 Relay log文件记录的优化

2.1.1 存在的问题在MySQL中,binlog是以event为基本单位进行记录,以MySQL 5.7 ROW格式(开启GTID)的binlog为例,一个DML(insert)会以5个event的格式记录到binlog中(其他操作均以一个或者多个event组成,不再一一罗列),分别为:

GTID_EVENT:记录当前事务的GTID

QUERY_EVENT:事务开始

TABLE_MAP_EVENT:操作对应的表

WRITE_ROW_EVENT:插入记录

XID_EVENT:提交事务

全部event组成一个完整的事务,完整的事务才会被SQL线程正确复现到从库上。当前IO线程接收binlog时,是以event为单位进行接收,即接收到一个event,记录到relay log中后再继续接收下一个。这种做法是低效的,也没有充分利用到MySQL本身的文件缓存。

2.1.2 优化方案优化IO线程记录relay log的方式,将以event为单位记录,修改为以事务为单位进行记录。合并IO线程小的IO操作,提高IO性能。

将单个的event写操作合并为多个event统一写操作,将小的IO操作合并成较大的IO操作,提高IO性能。

2.2 Master.info文件记录的优化

2.2.1 存在的问题Master.info文件在搭建复制时,记录主库IP、PORT等连接主库的相关信息,在复制过程中,记录IO线程从主库接收到的binlog的文件名和位置,文件和位置会在每次记录relay log成功后更新。

在基于GTID搭建复制后,master.info中记录的binlog文件和位置不再作为复制的依据,所以master.info中记录的binlog的文件和位置不再是有效的数据,也就没有必要每次进行更新。

2.2.2 优化方案在IO线程记录relay log成功后,更新master.info文件之前,添加判断。如果开启了GTID并且使用GTID作为复制的依据(auto_position=1),那么不再更新master.info中binlog的文件和位置。

其它的master.info操作仍然保留,如change master、shutdown等操作。

2.3 Relay log锁的优化

2.3.1 存在的问题在IO线程和SQL线程复制进度相似的情况下,在操作relay log时,会使用同一块文件缓存,在读写文件缓存时,需要加锁来保证操作的正确性。而IO线程和SQL线程需要频繁地读写这块公共内存,就需要对同一把锁频繁的竞争,从而导致性能下降。

2.3.2 优化方案将IO线程和SQL线程对relay log的操作拆分开来,不再使用同一块文件缓存。虽然这样做会导致SQL线程增加一次读IO操作。但是消除了对锁的竞争,大大地提高了IO线程和SQL线程整体的性能。

三、总结

优化后的复制流程图如下:

数据库原生复制流程中包括记录binlog、记录relay log、记录master.info、relay-log.info等,针对上述流程中的部分步骤以及其他未列出的优化,在功能和性能上进行改进,UDB高可用数据库在功能和性能上均得到了明显的提升,UDB高可用数据库可以提供更加可靠、高效的服务。返回搜狐,查看更多

责任编辑:

mysql udb_UDB高可用数据库内核深度优化相关推荐

  1. MyCAT+MySQL 搭建高可用企业级数据库集群

    第1章 课程介绍 课程介绍 1-1 MyCAT导学 试看 1-2 课程介绍 第2章 MyCAT入门 这一章中,我们将回顾了垂直切分,水平切分,分库分表等基础概念,然后快速回如何安装和启动MyCAT的, ...

  2. 构建Oracle高可用环境HA rac:企业级高可用数据库架构、实战与经验总结

    1.1  理解Oracle数据库 1.2  Oracle高可用特性(High Availability) 1.3  搭建高可用的周边辅助环境 1.4  高可用应用设计 1.5  高可用数据库设计 1. ...

  3. mysql keepalived_mysql高可用+keepalived

    生产环境中一台mysql主机存在单点故障,所以我们要确保mysql的高可用性,即俩台mysql服务器如果其中有一台mysql服务器挂掉后,另外一台就能立刻接替进行工作. MYSQL的高可用方案一般有 ...

  4. MySQL 常用高可用方案

    这一节内容来简单聊聊 MySQL 最常用的几种高可用方案. 1 主从或主主 + Keepalived 主从或主主 + Keepalived 算是历史比较悠久的 MySQL 高可用方案,常见架构如下: ...

  5. Mysql的高可用方案及主从详细配置

    1.常用的高可用MySQL解决方案: 数据库作为最基础的数据存储服务之一,在存储系统中有着非常重要的地位,因此要求其具备高可用性无可厚非.能实现不同SLA(服务水平协定)的解决方案有很多种,这些方案可 ...

  6. heartbeat V2实现MySQL+NFS高可用

    heartbeatV2实现MySQL+NFS高可用  实验前准备 1.时间需要同步,建议使用NTP服务器同步时间并且创建时间同步计划 #ntpdate 172.16.0.1 //第一个节点#ntpda ...

  7. Mysql MMM 高可用

    一.Mysql MMM 高可用概况: mmm_mond  负责所有的监控工作的监控守护进程,决定节点的移除等: mmm_agentd  运行在mysql服务器上的代理守护进程,通过简单远程服务集提供给 ...

  8. Spring - MySql实现高可用架构之MHA

    一.简介 MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover 功能.MHA 在监控到 mas ...

  9. MySQL第七讲 MySQL的高可用方案

           MySQL服务的主从和互主以及半同步 集群,都是使用MySQL自身的功能来搭建的集群.但是 这样的集群,不具备高可用的功能.即如果是MySQL主服务挂了,从服务是没办法 自动切换成主服务 ...

最新文章

  1. C/C++ 中生成特定范围内的随机数
  2. CodeSign error: code signing is required for product type Application in SDK iOS
  3. [转] Oracle中Blob转Clob
  4. 信息学奥赛一本通C++语言——1014:与圆相关的计算
  5. 计算机会考补考时间安排,2019-2020学年第二学期初补考考试安排(实时更新)
  6. 输出字符串引用名java_将方法名称作为字符串给出时,如何调用Java方法?
  7. linux重启网卡命令_如何在 Linux 中更改 MAC 地址 | Linux 中国
  8. 会议室分配时间最长_突破大设计1:时间分配
  9. 恢复Debian下root用户bash高亮显示
  10. 世预赛:12强赛首战国足0-3不敌澳大利亚,下一场面对日本队国足会如何调整?
  11. CNN中的小tips
  12. php 5.0入门系列教程 pdf,ThinkPHP5.0-快速入门手册(新手教程版).pdf
  13. 网吧登陆steam启动gta5一直启动不了
  14. 嵌入式设备的JTAG,Angle,和ICE三种调试笔记
  15. 常用AF对焦算法详解
  16. 理解ViT(结合代码)
  17. consul重启导致服务必须跟着重启解决方案
  18. 软工网络16个人作业一
  19. 云计算机房管理,云计算在机房管理中的应用前景研究
  20. linux xhci源码,第四十六篇:Linux中的USB XHCI HOST TRANSFER RING的相关数据结构 (1)

热门文章

  1. 运算放大器芯片输出扩流电路三例
  2. i9500android操作系统跑流量,三星I9500刷机包 百度云ROM54公测版 因为专注 所以精进...
  3. DEA中创建父子工程与maven打包Springboot聚合工程报错程序包不存在
  4. Java多线程——赛马娘小游戏
  5. thinkjs-redis配置问题
  6. java jtextfield清空_java – 当鼠标点击JTextField时如何清除JTextField
  7. 加 xjjdog0 好友,朋友圈送大红包!
  8. 计算机考研推荐的专业课视频链接(408)
  9. TS - 问题解决力 - 下篇
  10. 工具 · VSCode配置为绿柔护眼主题