网站怎么做动态背景图片,网页设计实训总结200字,营销型网站建设设计6,安卓app是用什么语言开发的数据库管理250期 2024-10-09 数据库管理-第250期 深入浅出多主多活数据库技术- Cantian存储引擎#xff08;一#xff09;#xff08;20241009#xff09;1 简介2 引擎构成3 引擎架构4 文件分布5 分布式MVCC6 限制/要求总结 数据库管理-第250期 深入浅出多主多活数据库技术… 数据库管理250期 2024-10-09 数据库管理-第250期 深入浅出多主多活数据库技术- Cantian存储引擎一202410091 简介2 引擎构成3 引擎架构4 文件分布5 分布式MVCC6 限制/要求总结 数据库管理-第250期 深入浅出多主多活数据库技术- Cantian存储引擎一20241009 作者胖头鱼的鱼缸尹海文 Oracle ACE Pro: DatabaseOracle与MySQL PostgreSQL ACE Partner 10年数据库行业经验现主要从事数据库服务工作 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP、年度墨力之星ITPUB认证专家、专家百人团成员OCM讲师PolarDB开源社区技术顾问HaloDB外聘技术顾问OceanBase观察团成员青学会MOP技术社区青年数据库学习互助会技术顾问 圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号非著名社恐社交恐怖分子 公众号胖头鱼的鱼缸CSDN胖头鱼的鱼缸尹海文墨天轮胖头鱼的鱼缸ITPUByhw1809。 除授权转载并标明出处外均为“非法”抄袭 之前在参天的邀请下通过华为稼先社区在华为内部做了一个与数据库、RDMA和存算分离架构的线上演讲与讨论。时隔一段时间了还是有必要对参天Cantian进行了解。
1 简介 Cantian是一个存储引擎采用了存算分的离架构通过分布式缓存技术、事务MVCC机制、多主集群高可用等关键技术可以让使能普通的单机数据库让其变得具有类似Oracle RAC的多读多写能力。Cantian引擎无需修改已有数据库的实现可以以无侵入的方式被MySQL等数据库加载运行。Cantian引擎的多读多写需要基于共享存储来构建。任何能够提供共享存储并可以提供标准文件接口的存储系统都可以进行对接。 Cantian的主要特性
多读多写集群管理集群成员状态维护、集群异常处理、仲裁等支持与MySQL对接与Innodb兼容支持MySQL共享系统表支持滚动升级支持备份
Cantian于2023年8月25日华为数据存储用户精英论坛上正式开源使用木兰开源许可协议。代码仓库https://gitee.com/openeuler/cantian 目前Klustron数据库已发布Cantian伙伴版本。
2 引擎构成
Cantian引擎主要由五个主要部分组成
CTCCantian Connector负责支持Cantian引擎作为分布式数据库的存储引擎插件支持DDL、DML、事务等数据库功能兼容分布式数据库的生态应用。CMSCluster Manager Service: 负责集群管理。多读多写模块Cantian引擎是基于共享存储的多写集群各个节点在架构上对等多读多写模块确保从任何一个节点都可以对数据库做DDL/DML/DCL等操作。任何一个节点做的修改在满足隔离级别的要求下其他节点都可以看到。所有计算节点共享和读写存储上同一份用户数据。存储访问层Cantian引擎通过共享存储提供的接口例如标准文件接口对数据进行读写操作同时借助文件系统提供的锁机制进行互斥。工具包括备份恢复工具将数据库下的所有表导出成SQL语句或者表格文本逻辑恢复时再将文本格式的逻辑数据文件导入到数据库中。运维管理工具各自命令行等。
3 引擎架构 架构中黄色为Cantian核心模块蓝色部分不包括在Cantian开源代码中需要由Cantian开源的使用者例如数据库厂商提供。
①为和MySQL对接的Connector部分这部分和MySQL在一个进程空间运行主要作用是接受MySQL的请求并通过IPC和Cantian进程进行通信。这部分代码完全遵守MySQL的开源协议进行开源②提供ctmgr由第三方管理Agent调用上报到管理平台③提供ctbackup工具语法上最大兼容extrabackup。由备份软件调度完成备份操作。④提供安装部署容灾配置等脚本。由管理平台调用完成安装扩容容灾调度等操作。⑤提供安装容器相关指导。资源发放管理容器化管理平台。Cantian引擎有Cantian业务进程和集群管理CMS进程组成。每个Cantian进程都会对应一个CMS进程来负责监管Cantian运行状态、脑裂仲裁以及故障拉起。当CMS故障时有watchdog拉起。多个服务器上运行的Cantian之间的高速网络通信。Cantian访问共享存储获取数据。 Cantian的Global Cache机制和老版本的RAC类似确定某个缓冲块的Master实例当一个实例拥有需要访问的对应缓冲块时则可直接访问否则需要向Master实例查询该缓冲块的位置Master通知该缓冲块缓冲的实例将其发送给需要访问该数据的数据库实例。 关于更多架构相关内容可以查看代码仓库中的《技术白皮书》有很详尽的介绍。 4 文件分布 在Cantian中的文件位置和Oracle RAC中类似都是存放在共享存储中的但是
集群中每个实例独占访问log、undo、temp等文件只有故障恢复时集群中的其他实例才能读取控制文件、system、users等表空间是可以在集群中并发读写的
5 分布式MVCC segment段管理 根据上一节文件分布可知每个实例拥有自己的undo表空间即拥有自己独立的undo段管理和回收机制一般只能进行本实例读取和修改不进入data fusion实例之间互不干扰。 Cantian使用SMON线程后台是在当前实例的undo段范围内进行shrink操作。txn管理 xmap, xnum) xmap - (seg_id, slot) 事务xid随着seg_id的分离而分离根据当前事务xid中的seg_id可以快速定位到事务所在的实例和实际实例内的segment。 每个实例的undo下面具有独立的事务表事务分配按照单机分配回收机制进行事务在实例间是不能复用的。分布式MVCC 集群模式下一致性读场景某个实例要查询的页面可能在其他实例甚至正在被其他实例上的事务修改。由于实例之前的undo和事务是隔离的当前查询无法直接在本地完成CR页面的构建如果依靠其他实例将需要的undo页面通过DCS传输到本地则效率太低。考虑采用传输CR页面的方式由相关实例后台参与CR页面的构建。 当MVCC需要一个经过多个实例多次变更的PRE-IMAGE的时候在Cantian引擎里构建过程相对复杂需要通过xid确定undo对应实例信息再通过多个实例一级级的向前传递最终才能完成构建对应CR页面。根据前面Global Cache机制相关内容如页面不在本地则在owner所在实例构建CR页面。
6 限制/要求
针对本期涉及的内容Cantian有以下一些限制或要求
目前发布的版本暂时仅支持2节点部署模式。计算节点之间需要稳定高速的通信网络以交换page、锁等资源。
总结
Cantian作为一个存储引擎类似于Oracle RAC的ASM实现让原来单点的数据库可以使用高性能高可靠的共享存储以实现计算性能的横向扩展。 老规矩知道写了些啥。