写点什么

用友降运维成本实践:OceanBase 替换 MySQL,实现高可用

  • 2022-12-08
    浙江
  • 本文字数:1832 字

    阅读完需:约 6 分钟

用友降运维成本实践:OceanBase替换MySQL,实现高可用

导语:随着业务模型的不断变化使运维难度越来越大,用友 IT 内部采用任务调度中心 XXL-JOB 和配置管理中心 Nacos 来实现公司 IT 分布式任务调度和微服务开发。但 XXL-JOB 和 Nacos 集群数量的增多又使其支撑系统 MySQL 难以招架。

为了寻找一款既能提供高可用又能统一管理集群的数据库,降低运维压力,用友 IT 内部开始了数据库选型的探索与实践。


以下为用友 DBA 的自述。


业务面临挑战

 

随着公司的发展,人员数量及 IT 系统的规模不断增长,日常的运维管理工作需要更多的投入,因此不得不引入一些自动化工具来助力运维管理,考虑到这些需求,我们引入了调度平台和配置管理中心来实现公司 IT 运维的标准化和自动化工作。


目前,公司 IT 团队任务调度平台部分采用 XXL-JOB,其核心设计目标是开发迅速、学习简单、轻量级、易扩展,正是基于这些因素。


同时,为了解决团队内部配置管理和服务注册的问题,我们又引入了 Nacos 作为注册中心和配置管理中心,通过 Nacos,一方面可以做服务发现和服务注册,另一方面可以使得配置标准化、格式统一化,当配置信息发生变动时,修改实时生效,无需重启服务器就能够自动感知相应的变化,并将新的变化统一发送到相应程序上,快速响应变化。使用配置中心后只需要相关人员在配置中心动态去调整参数,就基本上可以实时或准实时去调整对应的业务。另外,通过审计功能还可以追溯问题。


但随着 XXL-JOB 和 Nacos 集群数量的增多,给我们带来了很多其他烦恼。这些集群自身的运行维护也需要投入人力,同时这些系统都需要数据库来支撑,而我们使用的是单体数据库 MySQL,一方面会导致 MySQL 实例数量增多,另一方面,MySQL 实例无法提供 HA 高可用。当实例出现故障的时候,整个调度平台或配置管理中心就无法使用。如果要继续为 MySQL 创建高可用集群,管理成本和硬件成本都会非常高。


因此,我们想寻找一款既能提供高可用,又能统一管理集群的数据库,降低运维压力,减少运维成本。


技术选型与落地效果

 

在考察了目前市场上的各类数据库后,我们选择了两款分布式数据库作为候选,两款数据库都原生提供了高可用能力,在节点出现问题的时候,可以自动切换,并且业务不需要做任何改造。


其中一款数据库是 OceanBase,由于其提供多租户能力,因此我们最终选择了 OceanBase 作为调度中心和配置管理中心的数据库。利用这种多租户能力,我们可以将多个平台的数据库放在一套 OceanBase 集群中。大幅减少运维多套数据库所带来的工作量,同时租户的资源可以灵活配置,在某些集群业务大量增长时,可快速实现租户的扩容。


除了多租户能力外,我们通过阅读官方文档、浏览 OceanBase 问答社区以及与原厂工程师交流,并上手测试后,发现 OceanBase 还提供了以下四个关键能力。


  1. 高扩展



在我们使用 MySQL 时,其性能会随着数据量的不断增大而降低,导致平台变卡顿。而 OceanBase 这类分布式数据库,提供线性的扩展能力,在数据量增大之后,可通过增加服务器达到性能的线性扩展。


  1. 高可用



OceanBase 分布式数据库原生具备高可用能力,通过 Paxos 协议实现分区级别的高可用,在少数节点出现故障之后,依然能够提供服务,不需要再为数据库补充其他组件来实现高可用及自动故障转移。


  1. 高压缩率



基于 OceanBase 的 LSM-Tree 数据组织形式,全量数据=基线数据+增量数据,因为基线数据是静态数据,只有在下次合并的时候才会有变化,所以实现了很高的压缩率。我们从 MySQL 迁移到 OceanBase 之后,磁盘占用率只用到原先的 1/3 左右。


  1. 高兼容性



目前 OceanBase 基本兼容 MySQL 语法,因为 Nacos 以及 XXL-JOB 都需要在数据库中执行 SQL 的初始化,除了 OceanBase 在建表时由于 XXL-JOB 及 Nacos 官方提供的 SQL 运行需要 ENGINE=InnoDB 语法,其他都没有问题,解决方法很简单,去掉 ENGINE=InnoDB 就可以了。2-1


决定采用 OceanBase 后,我们投入测试环境运行,效果如下。


XXL-JOB 任务调度中心: 初始化 SQL 完成之后直接运行比较顺利,兼容很不错,没有发现任何异常。



Nacos 配置管理中心: 初始化 SQL 完成之后,能够顺利运行。



总结

经过上述探索及测试,说明了 OceanBase 与 XXL-JOB 和 Nacos 的兼容度、集成度很高,我们利用 OceanBase 的多租户能力,灵活部署 XXL-JOB 任务调度及 Nacos 配置管理中心,实现了多租户的管理能力,减少了大量 MySQL 实例,大大简化了数据库的运维工作。下图是我们集群现在的一个示意图。



对于本次数据库替换的初步尝试,我们认为非常顺利。基于 OceanBase 提供的 Daas 能力,可以更好地为 XXL-JOB 和 Nacos 这类依赖 MySQL 的工具提供服务,简化我们数据库的管理,让我们能够有更多的时间不断优化其他工具。


用户头像

企业级原生分布式数据库 2020-05-06 加入

github:https://github.com/oceanbase/oceanbase 欢迎大家

评论

发布
暂无评论
用友降运维成本实践:OceanBase替换MySQL,实现高可用_数据库_OceanBase 数据库_InfoQ写作社区