使用 Databend Cloud 归档 OceanBase 数据数据库

数据归档的必要性: 随着生产数据库数据量持续增长,不仅备份负担加重,数据库性能也会受到显著影响。通过数据归档方案,我们可以将主库中不再频繁访问的早期数据(如历史订单或日志)迁移到归档库中。这能有效减小生产数据库的规模,从而提升其性能。
数据归档是生产数据库管理中的一项关键任务。本文将以 Databend Cloud 归档 OceanBase 数据 为例进行说明。该方案同样适用于 MySQL, TiDB, PostgreSQL, Oracle, SQL Server 等其他数据库。
方案核心要素:
使用工具: db-archiver
数据存储: 用户指定的对象存储桶 (Bucket)
计算资源: Databend Cloud (按需付费模式)
整体架构图
本次 Demo 以阿里云为基础:

上图描述:
使用 db-archiver 连接 OceanBase 读取数据写入 Databend Cloud 中
Databend Cloud 使用外部表把数据存储在用户的 Bucket 中
Databend Cloud 在不使用时不会产生任何费用,使用时直接通过 Databend Cloud 平台访问,大大简化了使用和运维操作。
接下来我们演示一下上面的操作
环境准备
下载 db-archiver: https://github.com/databendcloud/db-archiver/releases
注册 Databend Cloud https://app.databend.cn/
准备要存储数据的 bucket 及对应的 ak/sk 信息和连接串信息
下载 db-archiver
db-archiver 是基于 Golang 开发, 如果能力也可以基于 main 编译,这样发现不爽的地方,可以直接修改,但做作为使用者,我一般是偷懒主义下载可用的二进制版本, 注意
linux-amd64 对应 64 位 X86 CPU
linux-arm64 对应 64 位的 ARM CPU 下载解压后只有一个 db-archiver 执行程序,对于配置文件,可以参考: https://docs.databend.com/tutorials/migrate/migrating-from-mysql-with-db-archiver
上述配置文件简要说明
sourceHost 源端 IP
sourcePort 源端 port
sourceUser 源端用户名
sourcePass 源端密码
sourceDB 源端 DB
sourceTable 源端要迁移的 Table
sourceQuery 归档读取数据的 SQL ,可以指定列
sourceWhereCondition 归档条件, 数据过滤的条件可以写在这里
sourceSplitKey 归档任务数据区间拆分的 key
databendDSN 写入 Databend Cloud 的连接地址
databendTable 写入的 Table
batchSize 读取和写入的每个 Batch 多大
batchMaxInterval 一个 Batch 最大间隔时间,用于对源库做一个保护,单位 秒
maxThread 归档任务数
deleteAfterSync 归档成功后是否会删除源端数据
db-archiver 限制, 目前 db-archiver 归档对源表要求:
有整数的主键
sourceWhereCondition 基于任务拆分键的条件
sourceSplitKey 任务拆分键
或是有基于明确的时间列做归档
sourceWhereCondition 基于时间过滤的条件
sourceSplitTimeKey 时间字段
timeSplitUnit 任务切分的单位
任务的 json 文件后续可以考虑用工具生成,这样就方便集成 db-archiver
注册 Databend Cloud
注册完 Databend Cloud 需要创建归档的 DB 及对应的表,获取连接 Databend Cloud 的连接。
创建 DB 及外部表

创建 DB 并使用
创建连接名称对应的存储(bucket),需要提前准备好存储的连接 URL 和对应的 AK/SK 信息:
创建外部表,需要准备好用户名准备的 bucket 名,及在 bucket 下存放的 prefix
例如 sbtest1 存储在 oss://wubx-bj/wubx/ 下面。
表结构一般是删除源库中的索引后,直接在 Databend 中创建。不过,创建外部表时,需注意指定连接信息。 表结构转换也可以使用: https://github.com/wubx/databend-workshop/blob/main/datax_mysql2databend/mysql_str2databend.py 这个脚本自动转换
获取连接 Databend Cloud 信息
创建一个连接 Databend Cloud 使用用的程序用的用户名和密码
通过 Role 来控制权限,方便后期做权限规划
获取连接串,首页概览:连接(DSN)。

在这个里面选择使用的数据库和计算集群,对于归档来讲,创建一个 xsmall 的集群即可,如果将来不够用了,可以创建 multi-cluster 的集群。主要关注一下主机连接串。

例如这里获取的为: 租户名.gw.aliyun-cn-beijing.default.databend.cn 补全一个 DSN 为: https://wubx:password@租户名.gw.aliyun-cn-beijing.default.databend.cn/wubx?warehouse=small-wubx
参考格式: https://用户名:密码@租户名.gw.aliyun-cn-beijing.default.databend.cn/数据库名?warehouse=集群名
也可以直接使用平台上 cloudapp 这个用户生成的连接。
数据归档
把任务生成的 log 直接存到对应的目录下面,后面方便分析。 任务运行完会提示源库多少条,目标同步完成多少条,也可以在 Databend Cloud 平台直接查询。另外一些报表任务也可以在 Databend Cloud 中体验一下。
总结
该方法的优点:
完全利用云上基础设施可以实现按需付费。 存储的按需储费, 计算 Databend Cloud 按需付费。
基于无运维操作,算力可以根据需求秒级伸缩
合理的调整数据摄入接点休眠时间,来节省费用
关于 Databend
Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式湖仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。
👨💻 Databend Cloud:databend.cn
📖 Databend 文档:docs.databend.cn
💻 Wechat:Databend
✨ GitHub:github.com/databendlab…
版权声明: 本文为 InfoQ 作者【Databend】的原创文章。
原文链接:【http://xie.infoq.cn/article/ecbe868f81a6e8fc14e5a355d】。文章转载请联系作者。
评论