笔者在工作中申请了几篇技术专利,主要是在MySQL学习和使用过程中的一些方案优化。计划将交底书中的“当前方案和问题”章节的内容作为一个系列在专栏中记录。本文是这个系列的第一篇,交底书原名“一种基于数据延迟智能控制的MySQL读写分离实现方案”,但申请过技术专利的同学都知道,被专利代理人更改过的专利名称已经跟交底书中的名称相去甚远。
〇. 缩略语和关键术语定义
主实例/源实例:提供读写服务的数据库实例,服务范围包括DDL、DML和各种查询(select)操作等。传统的主实例配置为Master-Slave模式,Master对外提供读写能力,Slave通过复制Master上数据建立与Master相同的数据副本,在Master出现故障时,Slave升级为Master
只读实例:提供只读服务的数据库实例,只读实例无法独立存在,需要依附于某个主实例。与主实例的Slave类似,通过异步复制主实例Master上数据建立相同的数据副本。
MGR:是MySQL Group Replication的简称,是MySQL官方推出的基于分布式一致性协议paxos构建的高可用、高可靠的MySQL集群,提供金融级的数据保证。采用传统的存储和计算结合的方式,即Shard Nothing。MGR支持多主模式和单主模式。在本专利中,仅使用其单主模式。
MongoDB ReplSet:MongoDB公司推出的基于分布式一致性协议raft构建的高可用的MongoDB集群。采用Share Nothing实现方式。
Amazon Aurora:是Amazon(亚马逊)推出的Cloud Native关系型数据库,基于MySQL进行开发,采用存储和计算分离的方式,即Share storage。
Aliyun PolarDB:是阿里云推出的Cloud Native关系型数据库,与Aurora相同,也是基于MySQL进行二次开发,采用存储和计算分离的方式。
Primary节点:将MGR、ReplSet、Aurora和PolarDB这类分布式数据库实例提供读写服务的节点成为Primary节点。
Secondary节点:与Primary相对应的,仅提供读服务或发挥容灾作用的节点。
GTID:Global Transaction Identifier,全局事务ID,MySQL引入的唯一标识一个事务的机制。
〇. 与本发明相关的现有技术
MySQL数据库是目前最为流行的开源数据