大家好,我是 JiekeXu,江湖人称“强哥”,荣获 Oracle ACE Pro 称号,墨天轮 MVP,墨天轮年度“墨力之星”,拥有 Oracle OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及 PCA、PCTA、OBCA、OGCA、KCP 等众多国产数据库认证证书,今天和大家一起来 初探华为Cantian,欢迎点击最上方蓝字“JiekeXu DBA之路”关注我的微信公众号,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送,谢谢!
前 言
之前一直听说华为不止有 GaussDB 和 openGauss 两类数据库,还有还有一种叫参天 Cantian 的,其实我知道还有一种刚过了国测的 TaurusDB(兼容 MySQL8.0 的华为云自研云原生分布式数据库,PS:官网没找到介绍,估计还有一些不知道的),那么参天 Cantian 到底是什么呢,今天让我们来一探究竟,它不是一种数据库而是一种存储引擎,采用了存算分的离架构,通过分布式缓存技术、事务 MVCC 机制、多主集群高可用等关键技术,可以让使能普通的单机数据库,让其变得具有类似 Oracle RAC 的多读多写能力。Cantian 引擎无需修改已有数据库的实现,可以以无侵入的方式被 MySQL 等数据库加载运行。类似Oracle RAC,Cantian 引擎的多读多写,也需要基于共享存储来构建,任何能够提供共享存储并可以提供标准文件接口的存储系统都可以进行对接测试。
Cantian引擎软件架构
那么参天引擎的架构是怎样的,下面让我们一起来看看。
参天产品的整体方案如上图所示。
黄色部分为 Cantian 开源代码交付的核心模块,主要部署在计算节点上。分成几个部分:
1.和 MySQL 对接的 Connector 部分,这部分和 MySQL 在一个进程空间运行,主要作用是接受 MySQL 的请求,并通过 IPC 和 Cantian 进程进行通信。Cantian 图中的标号①。这部分代码完全遵守 MySQL 的开源协议进行开源。
2.Cantian 引擎,参见图中的标号③。这部分运行时包括两部分,一部分是 Cantian 的业务进程,另一部分是集群管理 CMS 进程。每个 Cantian 进程都会对应一个 CMS 进程。CMS 负责监管 Cantian 运行状态,脑裂仲裁,Cantian 故障时由 CMS 拉起。CMS 故障时由一个看门狗拉起。为实现多写 Cantian 之间通过高速网络进行通信,网络通信部分参见图中标号②。Cantian 引擎整体是基于木兰开源许可协议的。
3.访问存储客户端(内置在 Cantian 引擎中),主要作用是和存储通信获取数据,使用外置的共享存储即可对接。参见图中标号④。
图上蓝色部分不包括在 Cantian 开源代码中,需要由 Cantian 开源的使用者,例如数据库厂商提供。
Cantian connector (MySQL 版)是由华为研发的一款 MySQL 存储引擎插件。它能够在无侵入的情况下将 16 个(或更多)MySQL 实例组成一个多读多写的应用透明集群,并借助 Cantian 数据存储引擎提供更高的 OLTP 性能以及更强的高可用能力。这将使 MySQL 单机的应用无需进行(分库分表等)改造就可以获得集群架构的灵活并发、高性能处理与故障快速恢复能力。Cantian connector 通过插件加载方式集成到MySQL中运行,替代InnoDB作为默认的数据存储引擎执行表的数据存储、查询与索引等功能。此外,MySQL仍然以原有方式访问元数据缓存(Dictionary cache)且使用 InnoDB 存储元数据(data dictionary)。Cantian connector 能够将这些元数据访问进行追踪与同步,达到元数据的集群一致化。
Cantian 引擎主要特性
参天引擎有如下六大特性,这里只是简单总结,更详细内容请查看官方白皮书。
MySQL 拥有插件式存储引擎体系结构,允许开发者根据 MySQL 预定义的存储引擎接口编写自定义的存储引擎。Cantian 引擎通过 CTC 插件以动态库 +IPC 通信的形式对接 MySQL,加载后作为 MySQL 的默认存储引擎工作,Cantian 引擎对 MySQL 原生代码无任何侵入修改。MySQL8.0 默认的系统表元数据存储引擎为 Innodb,Cantian 作为一个存储引擎,也有其系统表元数据,修改 MySQL 初始化流程将系统表的存储引擎改为 Cantian,使用 Cantian 引擎存放 MySQL 的元数据。
我们通过配置好共享存储服务器,编译安装两节点的参天引擎,就可以在 MySQL 编译后,通过加载参天引擎插件实现多读多写的多主多活数据库架构。
/ctdb/mysql/base/bin/mysqld --defaults-file=/etc/my.cnf --initialize-insecure --datadir=/ctdb/mysql/data --plugin-dir=/ctdb/mysql/base/lib/plugin --early-plugin-load="ctc_ddl_rewriter=ha_ctc.so;ctc=ha_ctc.so;" --initialize-insecure --user=cantian
如下图所示,参天引擎及 MySQL已经全部编译好了,MySQL 实例一创建数据库 ctdb,实例二则可以查看到这个数据库,通过参天引擎插件实现了MySQL数据的同步,类似于 Oracle RAC,可以多读多写。
Cantian 引擎能解决什么问题
传统的存算分离架构具有高可用性,可以允许计算和存储节点独立故障,提高了系统的整体可用性;也能灵活的高效的扩容,当计算资源或者存储资源达到瓶颈时,都能独立的按需扩容,不影响业务连续性;当然也有一些缺点,比如网络延迟,计算节点和存储不在同一节点,可能增加网络通信延迟;还有复杂性增加,需要更复杂的同步和协调机制来确保数据一致性,如 Cache Fusion、Global Cache、分布式 MVCC 等。
那么 Cantian 引擎能够解决什么问题呢?首先通过多主架构和共享存储,Cantian 引擎可以提供高可用性和高性能,实现数据库读写性能的提升以及类似于 Oracle RAC 的业务连续性和可用性;还能解决分布式数据库的分库分表问题,Cantian 引擎通过缓存层分布式改造,弥补了持久化层数据同步带来的性能与可靠性问题,支持多写多读,无需分库分表。还能实现数据的高可用,基于存算分离架构,通过专业存储保障数据高可用,服务器故障数据不丢失,新节点拉起时,可将数据重新挂载给新节点,缩短补从时间。Cantian引擎还可以让一个单机集中式数据库快速地变成一个高性能、多读多写或者强一致性的数据库系统,如 MySQL、openGauss 等均可改造成多读多写类似于 Oracle RAC 的架构。在高可用方面,使其无需主从切换,业务应用便可以在零数据丢失的情况下实现秒级切换,这点来说是非常重要的。
好了,今天就先介绍到这里,后面我们有时间再继续接着聊,下面第二篇文章是尹总监深入浅出一步步编译安装Cantian存储引擎的最佳实践文章,全网最全,感兴趣的朋友可以继续看看。
参考链接
Cantian引擎主要包含2个代码仓,Cantian代码仓,mysql-connector代码仓:
Cantian引擎开源软件代码仓:https://gitee.com/openeuler/cantian
connector开源软件代码仓:https://gitee.com/openeuler/cantian-connector-mysql
全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
❤️ 欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
分享几个数据库备份脚本
一文搞懂 Oracle 统计信息
我的 Oracle ACE 心路历程
MOP 系列|MOP 三种主流数据库索引简介
Oracle 主流版本不同架构下的静默安装指南
关机重启导致 ASM 磁盘丢失数据库无法启动
Oracle SQL 性能分析(SPA)原理与实战演练
Oracle 11g 升级到 19c 需要关注的几个问题
Windows 10 环境下 MySQL 8.0.33 安装指南
SQL 大全(四)|数据库迁移升级时常用 SQL 语句
OGG|使用 OGG19c 迁移 Oracle11g 到 19C(第二版)
Oracle 大数据量导出工具——sqluldr2 的安装与使用
从国产数据库调研报告中你都能了解哪些信息及我的总结建议
使用数据泵利用 rowid 分片导出导入 lob 大表及最佳实践
在归档模式下直接 rm dbf 数据文件并重启数据库还有救吗?
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————