背景
中国联通软件研究院架构部平台承载了上千应用的数据库需求,并且现存大量数据库使用过程缺少规范、缺少监控,同时还存在着数据库核心技术卡脖子风险。为了实现核心技术可靠,及时为用户解决线上问题、满足用户的功能需求,提供物美价廉的数据库产品,为公司减成本增收入,在开源的基础上自研数据库非常必要。
在联通云统一的运维体系下,需要管理的应用系统数量非常多,但是在规模化运维的场景下,运维人员数量始终有限,必须通过建模化的工具,对平台和应用在数据库使用上进行权责划分,以提高运维效率。
在上述背景下,中国联通软研院平台架构部的数据库研发团队,历时13个月完成了对OceanBase社区版的适配与优化,打造了分布式HTAP数据库产品——CUDB for OceanBase。坚持边用边改、以改促用,使得该产品得到规模应用,取得良好的使用效果。CUDB for OceanBase 完全适配了PKS体系,完美补齐CUDB 分布式HTAP数据库的空白,为联通云产品体系再添新星。CUDB for OceanBase 将产品的开通、使用、监控和运维全面接入联通云,实现产品资源的一点开通、一点交付、一点监控、一点运维和一点操作,为联通云租户提供易用而专业的一站式服务。
2022年3月份上线以来,联通软件研究院平台架构部数据库团队已将 CUDB for OceanBase 推广至联通总部及各省分公司,目前已上线200+应用,超过600天无生产故障(主机宕机不影响业务)。本文总结了CUDB for OceanBase 的共建经验,希望能给大家带来一些参考价值。
探索和调研
使用自研数据库产品是保障信息安全的重要举措,同时联通内部有几百套缺少监控、存在单点问题的MySQL急需进行替换。为实现数据库技术可靠并降低数据库替代成本,联通软件研究院平台架构部数据库研发团队对市场主流 OLTP 数据库从功能、性能、平滑过渡等多方面进行探索和调研。
在调研 OceanBase(3.x 版本)的过程中,联通软件研究院平台架构部数据库研发团队了解到 OceanBase 是原生的分布式数据库,在弹性扩展、高可用、多活容灾、存储引擎、分布式事务、HTAP、多种主流数据库兼容性、多租户等多个方面都有关键性的技术突破,并在复杂而严苛的金融核心业务场景中久经考验。其中,以下八个特点成为OceanBase与联通合作的关键要素。
1. 多租户。
随着联通软件研究院的业务系统越来越复杂,原来的单体服务在工程和管理上变的越来越不堪重负。调研的其他分布式数据库,如果将多个业务租户在一个数据库中做逻辑名字空间隔离,大小租户之间会互相影响;如果每个业务租户使用一个独立的数据库,则成本较高,几十到上百套分散数据库环境,运维工作复杂,同时扩展性受限。
这时 OceanBase 原生多租户架构的优势就体现了出来,可极大程度简化数据库基础设施的复杂度:在一个OceanBase集群内同时运行多个数据库租户,每个租户可以视为一个独立的数据库服务;租户间数据和资源互相隔离,并且在集群内统一调度;支持在创建租户时选择不同的兼容模式,每个租户可单独配置数据副本数量、副本类型、存储位置及计算资源等。联通软件研究院平台架构部数据库研发团队将数据库集群按指定规格(CPU、内存、存储、TPS、QPS)划分成多个资源池,分配给不同的租户。租户间除了数据隔离,还支持 CPU、内存的资源隔离 (4.x 版本又支持了磁盘和网络的 I/O 资源隔离)。
使用 OceanBase 数据库内原生多租户,能更好地平衡隔离性和成本,而且大小租户可以独立扩缩容。使用 OceanBase 多租户特性,联通的数据库管理员只需要运维少量集群,既能保证租户之间数据和资源互相隔离,又能提升数据库的稳定性。
基于以上考虑,最终联通政企中台的业务采用如下架构:一个集群中包含大量的租户,集群采用3个Zone 高可用部署,每个Zone包含包含7台主机,额外单独部署6套OBProxy做负载均衡和流量调度。
2. 分区级可用性。
分区是数据存储的基本单元,也是OceanBase用以提供水平扩展性的基本操作单元。每个表由若干个分区组成,可分布在多个节点上。跨节点事务自动使用分布式事务,无需应用特殊处理。集群管理服务提供分区位置自动管理,智能负载均衡和自动容灾处理。
3. 全对等节点。
所有服务节点都支持SQL计算和数据存储,每个节点自主管理所服务的分区数据。整个集群只有一种数据库服务进程,无外部服务依赖,运维管理简单。
4. 无共享。
使用普通服务器和数据中心网络组成的 Shared-nothing 集群部署,无需基于专用网络环境的SAN存储设备。集群原生自动管理计算资源和存储资源的分配和动态资源均衡。支持弹性水平或垂直扩缩容,读写性能可线性扩展。
5. 多副本。
每个分区有多个副本,以Zone为逻辑单元管理多个数据副本的存储位置,多个副本存储在不同的Zone里。每个Zone可以包含多个服务器节点,集群的副本自动均衡策略控制这些副本在节点上的分布。副本包括全功能副本、只读型副本、日志型副本等不同类型,具备不同的数据一致性和资源要求,用户可以根据实际情况选择不同的副本类型。
6. 基于 Paxos 协议的高可用。
日志流的多个副本组成一个Paxos组,组成员内通过Paxos协议同步事务日志,并使用分布式选举协议在故障发生时进行自主选举。少数派节点发生宕机时,支持快速无损自动切换,达到RTO小于30秒的自动故障恢复指标。基于Paxos协议和多类型副本能力,OceanBase支持多种适应于不同场景的故障容灾方案。与Paxos类似的分布式共识协议是Raft,根据技术原理,Paxos协议比Raft协议能容忍更多的网络异常,当网络通信出现偶发抖动的时候,基于Paxos的同步协议往往可以屏蔽这些抖动对事务提交的影响。因此,像OceanBase这样使用Paxos协议的分布式数据库更适应于多地域部署。
7. 高效的存储引擎。
OceanBase 存储引擎是基于 LSM-Tree 的,采用读写分离设计和行级细粒度记录更新,变更数据保存在内存中,并批量写入到磁盘上。因此,它能够达到内存数据库级写入性能和磁盘数据库的存储成本,并消除了传统B+Tree的磁盘随机写瓶颈和存储空间碎片化问题。采用行列混合存储格式,磁盘数据块按列组织,利用编码压缩大大降低存储成本。
8. 开源开放。
除了上面说的这些特点以外,联通软件研究院平台架构部数据库研发团队最看重的还有 OceanBase 使用木兰公共许可证开放全部核心源代码,包含原生分布式的全部核心特性。
同时,OceanBase 围绕开源建设了一个包含用户、开发者和生态伙伴,涵盖数据库研发、人才培养、产品技术交流的活跃社区。除了数据库内核,社区版也致力于完善丰富的生态工具。一方面,OceanBase 社区版与其他开源产品,如 Kubenetes、Flink、Canal、Prometheus 等深度集成和融合;另一方面,OceanBase 的平台工具OCP、OMS、ODC 等也都提供了社区版,社区用户可以选择直接使用这些平台工具完善的企业级工具产品,提升开源数据库使用体验和运维效率。
正是由于 OceanBase 的开源开放,联通软件研究院平台架构部数据库研发团队才会历时 13 个月完成对 OceanBase社区版的优化和改进,最终打造出了一款 CUDB for OB 分布式 HTAP 数据库产品。
CUDB for OceanBase产品共建与适配
基于联通软件研究院平台架构部数据库研发团队对市场主流 OLTP 数据库从功能、性能、平滑过渡等多方面进行探索和调研,最终选择了支持高可用及多租户的 HTAP 数据库 OceanBase 作为平台后端的数据库。平台会读取底层数据库 OceanBase 的数据、视图等信息,调用部分 API、合成部分功能,集成了满足内部业务需求的更便捷、易用的能力。同时,数据库的基础运维做了大量的平台建设,尤其是数据迁移平台、监控平台、熔断拦截、数据恢复等,通过这些平台让CUDB for OceanBase 更好地服务业务。
CUDB for OceanBase 整体特性
1. 全栈XC。
全面适配海光、鲲鹏、飞腾等CPU,以及麒麟、统信等操作系统,支持全栈XC,保障信息安全,规避软硬件技术瓶颈风险。
2. 节省资源。
为了保障数据库高可用,一般按照流量高峰进行资源配置,波峰波谷最高差距可达10倍,导致资源利用率不高。同时传统数据库为了高可用又采用一主两备的方式,备机闲置加剧了资源利用率低的问题。因此,联通软件研究院平台架构部数据库研发团队优化资源使用方式,研发自动弹性扩缩能力,提升资源利用率。
· 资源共享。租户共享资源,采用多租户共享资源池建设模式,租户间共享资源并相互隔离,提高资源利用率;节点资源均衡利用,采用表均衡分布在每个节点上模式,不再有备节点资源闲置问题,并且可以完全横向扩容,资源利用率更高;存储资源高效压缩,深度使用数据压缩功能,相比MySQL可以有效节省70-90%存储资源。
· 弹性扩缩。数据库租户在线秒级纵向扩缩,TB数量级小时级横向扩容能力,实现应用无感知扩缩容,应用无需为了应对高峰访问而冗余大量资源,从而提高资源利用率。
3. 快速迁移。
当前,联通软件研究院生产环境还有很多应用采用MySQL 5.5、MySQL 5.6、MySQL 5.7等版本建设。为了加快统一技术栈收敛,研发高度兼容MySQL多个版本的离线迁移工具,支持将数据迁移至CUDB for OceanBase,实现10万条/s迁移速度,已帮助应用迁移数据25TB+。
4. 高可用。
OceanBase社区版具备高可用的能力,但存在监控体系不够完善的问题。联通软件研究院平台架构部数据库研发团队结合实际的生产场景,对全面监控、熔断拦截、数据恢复、数据自治等能力进行研发实现及增强,进一步提升了数据库的监控能力及高可用能力。
· 全面监控:研发了涵盖集群级及应用实例级的监控指标体系,监控指标对接数字化监控平台,实现监控一点可视、告警实时推送。
· 熔断拦截:实践统计生产上数据库相关的故障80%是由不规范的SQL编码导致,弹性扩缩并不能从根本上解决问题,为此研发了SQL语句熔断优化,链接数拦截功能,保障资源合理分配和业务可用性。
· 数据恢复:研发了覆盖全场景的数据恢复中心能力,用于误操作时生产数据快速恢复,全库恢复模式可在10钟恢复TB级数据到任意时间点,精准恢复模式基于CLog解析功能,可按表主键、按表全字段快速、精准恢复DML语句的误操作。
· 数据自治:对接在主研发的泛数据库自治服务平台CDAS,覆盖应用的研发态、生产态、日常运维态对数据库的使用场景,使人人都是DBA。
资源统一管控平台
功能1:集群管理。
便于了解资源使用情况、集群级参数、集群管理、集群监控、租户监控(CPU、连接数、TPS、QPS)。
功能2:租户管理。
主要做监控数据的数据库管理、用户管理的基本管理信息以及数据迁移和实例的数据恢复。数据迁移目前是支持这个源端是MySQL、OceanBase数据库,目标端支持OceanBase,目前支持离线迁移。
功能3:实例数据恢复。
用户租户恢复本租户数据到生成的新租户,恢复时间点可以选择七天内任意的时间点。对于做过备份的数据,用户可以通过此功能,恢复某张表或者某个时间点的数据。
功能4:备份恢复的界面化管理。
数据备份、实时日志备份、全量、增量、手动开启日志备份、备份信息(备份状态)。
自研的数据迁移工具 MOT
虽然OceanBase 提供的数据迁移工具 OMS非常方便,但因为自研的工具对业务的适配性更高,有问题可以在内部快速排查、定位及解决,所以联通软件研究院平台架构部数据库研发团队自研了一套数据迁移工具——MOT,源端支持MySQL 和 OceanBase,目标端支持 OceanBase。
MOT 支持全库表结构和表数据迁移、特定表迁移、表过滤条件迁移、迁移结果稽核等,并兼容 MySQL 8.0、无主键表、全文索引列、外键依赖表等场景,它通过独特的任务调度方式实现了高效的数据迁移,实测迁移性能超过10w条/s,迁移性能可达DataX的10倍以上,且为纯界面操作,使用更加灵活方便。当前已实施迁移任务870+次, 迁移数据量超过25TB, 迁移数据行数超过550亿。
自研的数据库自治服务平台
OceanBase 也提供了管控平台 OCP,但是联通内部对监控平台的安全性要求极高,需要多重因素的认证,因此,联通软件研究院平台架构部数据库研发团队内部自研了数据库自治服务平台CDAS。现已支持以下能力。
1. 生产运维操作,高效全面。
- 一键健康巡检:研发数据库一键巡检功能,月均出具约800份巡检报告,帮助应用一键看全多数据库实例的核心指标健康状态。
- 一键根因定位:研发了性能快照功能,秒级保存实时核心指标,便于排查故障时刻数据库状态,实现快速根因定位。
- 一键故障抢通:长连接暴涨、高耗SQL引起的数据库性能劣化,如不及时干预会造成连锁反应,导致故障,为此研发了长连接自动查杀、SQL熔断等功能,及时阻断长连接、高耗SQL,防止数据库雪崩。
2. 数据库分析,数据库的健康体检表。
提供数据库AWR报告,涵盖资源使用情况、热点分布、表结构和索引等关键指标,数据库健康状态一目了然,帮助用户分析数据库问题并预防。
3. 数据库治理,隐患端到端跟踪。
包括慢SQL治理和表空间治理两部分。
慢SQL治理指研发慢SQL治理功能,实现从小天助手预警、SQL优化建议、研发优化到治理效果跟踪的全流程管理,从源头解决生产隐患。
表空间治理即研发表空间治理,实现表空间预估使用时长、表空间异常诊断、碎片一键回收等功能,已成功预警11次应用空间异常问题,协助应用解除表空间异常造成数据库性能下降和不稳定的隐患。
部分业务应用效果
目前联通软件研究院平台后端已超过200台机器支持,业务以多租户的形式部署在一套集群,平台后端每个区域对应多套集群。最大的集群有12台机器。需要支撑的总应用系统数量超300个,已有超100个应用上线,其他应用陆续接入中。下面简单介绍一下几个典型的业务。
典型业务一
实例规模:32C/64G/3072G
数据量:13.3TB
使用 CUDB for OceanBase 的优势:
- 创建用户、创建数据库、为用户赋权等操作均支持白屏操作,非常人性化,降低了出错的风险,方便管理。
- 在使用过程中,根据告警监控,动态感知实例运行状态和资源使用情况。
- 业务脱敏后详单数据入库CUDB for OceanBase 效率高,没积压。
- 10倍压缩比,存储空间利用率高。
典型业务二
实例规模:8核CPU、32G内存、200G高性能存储
系统面向对象:省分公众用户
使用 CUDB for OceanBase 的优势:
· 支持数据和业务平滑迁移。将 MySQL 的数据平滑迁移至 CUDB for OceanBase,迁移效速度快,兼容性好,几乎不需要进行改动。
· 支持数据闪回恢复。不小心误删了某些数据,使用实例数据恢复功能将数据恢复至任意时间点,经验证,数据不丢失,为安全性又加了一层保障。
· 表关联性能大幅提升。对于表关联查询,采纳联通云CUDB for OceanBase专家的意见,使用表组管理功能,将关联查询的表绑定到一个表组内,大大提高了表关联查询的效率。
典型业务三
规模:32C/64G/6144G
数据量:17TB
系统面向对象:各省份业务人员和运维人员
使用 CUDB for OceanBase 的优势:
- 高存储压缩比降低存储成本,有效降低计算成本,并利用多租户部署充分利用系统资源,原数据库迁移17TB数据,在OceanBase 仅使用4TB存储空间,节省70%存储资源。
- 在线进行平滑扩容缩容,扩容后自动实现系统负载均衡,并且扩容或缩容过程对应用透明。
未来展望
2022年 10 月份,OceanBase社区版已升级到4.x版本,本着为应用提供更稳定、更高效的数据库产品的原则,在稳定性、高可用等方面都做了非常多的优化。
联通软件研究院平台追随OceanBase社区步调,5月份对4.x版本的功能、新特性、性能、集群极限能力等方面进行了详细验证,发现4.x版本在稳定性、高可用性、易用性等方面都有较大的改进。
· 稳定性:租户级合并、备份、I/O隔离,降低了租户问题对集群的影响;取消单机表分区数限制;可支持的时钟差异为3.x版本的10倍以上。
· 高可用:支持租户级主备模式,可据此搭建物理级的备份集群。
· 易用性:支持存储过程、自定义函数、触发器、序列、空间数据类型等;支持主键修改、DDL级外键约束控制等。
· 性能:4.x版本I/O隔离默认绑定CPU规格,低规格下4.x性能低于3.x,高规格下略高于3.x,4.x性能增长基本呈线性,3.x性能随规格增长非线性。
· 其他:租户创建方式、备份恢复方式、资源和性能等管理类操作、视图等较3.x变化较大,需兼容适配。
2023年,联通软件研究院平台架构部数据库研发团队在6月初完成开发者门户CUDB for OceanBase产品控制台适配、兼容性改造;完成监控、运维能力适配改造,已完成应用使用的所有准备工作。7月份完成生产环境4.1版本的48台规模集群的搭建,目前已推广51个应用,并在11月份平滑升级到4.2版本。
除了紧跟OceanBase社区新版本的使用和推广,联通软件研究院平台架构部数据库研发团队目前也在深度参与OceanBase社区的共建,例如:参与OceanBase开发者周会,从源码层面深入了解 OceanBase,贡献代码、提交issue,以及在社区或钉钉反馈使用问题,分享使用经验等。
最后,联通软件研究院平台架构部数据库研发团队对于CUDB for OceanBase有以下几点期待。
第一,能力提升,试点多中心多活。两地三中心五副本容灾能力解决方案落地实践,异地灾备/双活平台架构建设,实现地域级、机房级无损容灾(RTO = 0),支撑 7x24 小时持续服务,满足应用业务能力双活需要。
第二,中心化建设,数据库运维智能化。数据库产品能力建设体系化、中心化,围绕着产品部署、使用、监控、维护等场景,打造产品交付中心、操作中心、数据恢复中心、数据卸载中心、感知中心和运维中心,基于大数据和AI能力,实现数据库的自感知、自修复、自优化、自运维、自安全。
第三,贡献开源,自研功能共享共建。秉承拥抱开源、使用开源、贡献开源的原则,将联通自研OceanBase数据离线迁移工具、基于CLog的精准记录恢复工具等对外开源,共同做好产品生态工具的建设和维护。