如何解决数据库多、管理复杂的问题

2024年 5月 7日 95.7k 0

随着企业的发展,所需的数据库实例数往往越来越多,并且数据量也会随之增长,带来了成本和运维难度上的提升,出现数据库多管理复杂等问题。基于这种场景,选用MySQL的企业会面临不同的实例资源利用率不平等,架构冗余浪费较多,实例资源无法复用,运维难度大,管理复杂等问题。如何降低维护成本,成为企业关心的问题。

OceanBase 是原生分布式数据库,可以单集群通过多租户进行实例整合,降低运维难度的同时提升集群整体的使用率。针对数据库多出现的固有问题,OceanBase 进行针对性解决,以达成综合降本的效果。

一、原生内置的多租户机制:提升数据库资源利用率与管理效率

以下是某业务数据库多的场景下 MySQL 实例的运行状态,多个不同规格的 MySQL 实例,每个 MySQL 实例的 CPU 利用率处于较低水位,存储的磁盘空间也会预留一定的水位。这种情况会存在以下几个问题:

• 数据库多资源无法复用:各实例均是独占资源,资源利用率与资源密度较低;

• 数据库多存储成本高:各实例各自独占固定存储空间,存储无法复用;

• 抗突发能力弱:突发流量需要快速扩展实例,垂直扩容往往耗时较长;

• 数据库多管控复杂:实例数量增多,运维成本也会提升,如主备库、备份恢复、问题定位等。

如何解决数据库多、管理复杂的问题-1

OceanBase 租户机制,可以在数据库多的场景下,将多个实例合并到一个集群中。以蚂蚁集团实践为例,一个典型场景是将有波峰、波谷的业务放入一个集群,比如白天跑业务、晚上跑批和分析,混合部署能够充分利用整个集群的资源和存储空间。主要有以下优势:

资源充分复用:多租户之间可以业务混部、削峰填谷。OceanBase 3.2.x 及之后的版本,CPU 利用 cgroup 进行隔离。不同租户的 Worker 线程放到不同的 Cgroup 目录内。当一个 OBServer 上只有一个租户负载很高,其余租户空闲时,负载高的租户的 CPU 可以超出限制,但内存的使用范围依然会被严格限制;对数据库多的场景是一个比较好的参考。

抗突发流量:数据库多的情况下,每个租户可以通过超卖机制抢占资源,同时租户内也支持秒级扩展;

存储复用与隔离:租户 SSTable 使用的 IOPS 及存储空间上限能够被控制,数据库多的不同租户之间复用同一部分存储空间;

单集群管理:数据库多的场景,可从过去 n 个数据库实例到一个单集群的运维与管理,成本大幅下降。

如何解决数据库多、管理复杂的问题-2

二、针对数据库多场景的数据库实例

数据库实例 1 是对内的一个 HR 系统,日常流量非常小,资源利用率可能只有常态化的个位数,5%-10%

数据库实例 2 是交易波动比较大的系统,如秒杀、电商系统,资源利用率的波动非常大,3%-80%

数据库实例 3 是比较危险的系统,长期处在比较危险的水位。

这些系统是数据库多的典型场景,无论是 DBA 还是运维同学去维护时候,都要同时在控制台上查看多套实例。

如何解决数据库多、管理复杂的问题-3

为解决数据库多的问题,OceanBase 下有非常多台机器和资源可以部署成一个资源池,然后我们在资源池里,为每个租户定向划分一部分独属于它的资源,由此在 OceanBase 中一个租户就可以承载原来的一个实例,从而让你原来运维多套 RDS 实例或者 MySQL 实例,变为运维一套 OceanBase 集群。

这带来的好处就是租户的规格可以随时随地动态调整,也不用担心业务产生影响,从而可以非常灵活的调度所有资源,提升整体资源利用率,降低成本,并且此时也无需挨个查看 RDS 实例,直接管理一套 OceanBase 集群就可以,显著降低数据库多管理复杂的风险。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论