当前位置: 首页 > news >正文

MySQL 数据归档的技术困境与 Databend 解决之道

在企业数字化转型的浪潮中,MySQL 作为最受欢迎的开源数据库,承载着越来越多的业务数据。从最初的几百 GB,到现在动辄几个 TB 甚至数十 TB 的数据规模,MySQL 数据库的体量增长速度常常超出企业的预期。然而,一个不容忽视的现实是:这些庞大数据库中真正的热点数据往往只占 20-30%,剩下的大部分都是历史数据、日志记录和归档信息。

这种现象在各个行业都很普遍。电商平台需要保留多年的订单记录用于用户查询和监管合规;金融机构必须长期存储交易流水以满足审计要求;政务系统要保存大量的办事记录和操作日志;游戏公司积累了海量的玩家行为数据用于分析和运营。这些数据有个共同特点:具有明显的生命周期,在线一段时间后失去实时业务价值,但仍需要保留用于合规、审计或分析。与此同时,随着业务规模的扩大,现在有很多企业正在从传统的 MySQL 迁移到分布式数据库,如 TiDB、OceanBase 等原生分布式数据库。这种技术升级往往涉及大量的数据搬迁工作,如果企业平时就做好了数据归档工作,将冷数据提前分离出来,那么在进行数据库迁移时的工作负担就能大大减轻。

如何妥善处理这些"冷数据",既保证业务系统的性能,又控制存储成本,已经成为每个使用 MySQL 的企业都必须面对的问题。更重要的是,随着数据驱动业务决策的趋势越来越明显,这些历史数据的分析价值也在不断提升,企业需要的不仅仅是"存起来",更需要"用得着"。

MySQL 归档的技术困境与现有方案

现在 MySQL 常用于 OLTP 业务环境,一般会使用比较好的硬件资源来提供对外服务。MySQL 数据对外提供的数据动不动好几个 T 也是正常的。在很多业务中,数据有较强的生命周期,在线一段时间后,可能就失去业务意义。

典型的归档需求包括:某个业务下线后的历史数据、业务数据超过服务周期(例如某个业务只需要近 3 个月的数据)、业务操作的日志类型数据进行归档、分库分表的数据库需要合并到同一个地方提供统计查询及分析能力,以及定期的备份归档提供审计工作进行查询使用。

现在常见的归档方式一般分成两大类,核心工具通常是 pt-archive 或解析 binlog 获取归档的数据。

第一类:使用 MySQL 存储归档

这类方案中,一般是通过购买 PC 机,通常是大容量(50T左右)、大内存机型,可以跑实例,来对线上的生产库进行归档,甚至是备份同步。这种场景是最常见的,甚至见到在线下建一个主从,对 PolarDB 进行归档对外提供线下内网查询。

该方式的优点很明确:基于 MySQL 环境,大家都熟悉好管理;和线上环境基本能保持同一个版本及高度的兼容;归档环境可以使用大容量便宜的磁盘构建。

但这种归档服务也有明显的缺点:为了成本考虑,归档节点通常没开启 Binlog,真正的备份还会放到对象存储中一份,也没有从库,如果发生数据损坏或硬盘损坏,数据恢复周期长;计算能力不够,基本没有能力对计算节点扩展,如果需要计算,通常需要把数据抽出来放到大数据环境中计算;这种架构存在大量的 CPU 和 RAM 资源的闲置。

第二类:使用 MariaDB 归档

MariaDB 有一个特性:S3 engine,该引擎有较高的压缩能力,基本也保持了 MySQL 的使用习惯。归档流程是先写 InnoDB,然后 alter table tb_name engine=s3

该方案的优点包括:基本保持了 MySQL 兼容能力、存储上支持 s3 类对象存储、支持高压缩存储。

该方案的缺点也很明显:s3 引擎只能读,不能写;不支持增加写入,如需改变还需要转成 InnoDB 表;每次 InnoDB 到 s3 引擎的转换需要非常长的时间,增加了复杂度。

除了这两种主流方案,还有企业选择 Hadoop 生态或云端商业数据仓库,但前者的复杂度和成本往往超出预期,后者则面临厂商锁定和高昂费用的问题。

Databend 的技术优势:云原生架构的新选择

在这些传统方案的局限性日益明显的背景下,Databend 提供了一个更完美的解决方案。

Databend 是一个使用 Rust 研发、开源、完全面向云架构的新式数仓,提供极速的弹性扩展能力,致力于打造按需、按量的 Data Cloud 产品体验。它具备以下特点:

  • 开源 Cloud Data Warehouse 明星项目
  • Vectorized Execution 和 Pull&Push-Based Processor Model
  • 真正的存储、计算分离架构,高性能、低成本,按需按量使用
  • 完整的数据库支持,兼容 MySQL、Clickhouse 协议,SQL Over HTTP 等
  • 完善的事务性,支持 Time Travel、Database Clone、Data Share 等功能
  • 支持基于同一份数据的多租户读写、共享操作

Databend 设计上遵循几个重要原则:

1.No Partition

2.No index(Auto Index)

3.Support Transaction

4.Data Time travel/Data Zero copy clone/Data Share

5.Enough Performance/Low Cost

部署和使用方式

Databend 支持 MySQL、Clickhouse、SQL Over Http 三种方式的处理,这种多协议支持为不同的业务场景提供了灵活性。

数据写入的多样化选择

Databend 提供了三种主要的数据写入方式:

  1. Insert into 写入:支持 JDBC、Python、Golang 进行 insert 写入。如果要使用 insert 写入,建议使用 Bulk insert 增加批量写入。这个使用上和 MySQL 没有什么区别。

  2. Streaming load:专为大批量数据设计,性能表现相当出色。实际测试显示,81G 的文件、近 2 亿数据导入 Databend 只需要 3 分钟多一点。另外 Databend 也支持直接读取压缩文件,虽然性能还有提升空间。

  1. 基于 stage 写入:Stage 可以理解为 Databend 的一个网盘管理功能。可以创建 Stage、上传文件、查看文件,通过 copy into 的命令直接将 Stage 的文件加载到 Databend 的表中。

真实案例:从理论到实践的验证

MySQL 归档到 Databend 的最佳实践方案

基于我们接触过的大量真实案例经验,对于需要考虑 MySQL 归档的场景,建议可以考虑使用 Databend 加对象存储来替代传统方案。

利用 Databend 归档 MySQL 可以获得显著的优势:

  • 基于 对象存储 基本可以实现容量无限。不再需要担心磁盘空间不够的问题,也不需要提前规划容量。
  • Databend 数据压缩 比较高,正常情况下可以做到 10:1,大大降低存储空间需求。这个压缩比比传统的 MySQL 存储要优秀很多。
  • 可以基于 MySQL 协议管理数据,对使用上基本可以做到没有任何变化。现有的 MySQL 客户端、工具、应用程序都可以直接使用,学习成本几乎为零。
  • 存算分离架构,对于计算层不足的情况下,可以非常方便的扩容,也无须担心存储的高可用。当需要进行复杂分析时,可以动态增加计算资源,而不需要担心存储层的扩展问题。
  • 原来 MySQL 生态的工具基本可以重用。无论是监控工具、备份工具还是数据分析工具,都可以继续使用。

Databend 现在对象存储支持相当广泛:AWS S3、Azure、阿里云、腾讯云、青云、金山云以及 minio、ceph 等设备。同时 Databend 的计算能力很强,如果需要分析,可以直接在 Databend 中进行计算,而不需要把数据再导出到其他分析系统中。

利用 Databend 可以帮助用户更方便地使用云上的资源,让用户可以获得足够的性能及较低的成本。这种架构既解决了传统 MySQL 归档方案的性能瓶颈,又避免了 MariaDB S3 引擎方案的使用限制,为企业提供了一个真正实用的归档解决方案。

除了帮助 MySQL 数据库归档,Databend 也可以对前文提到的 TiDB 和 Oceanbase 等数据库进行归档,降低数据存储成本。以下是两个真实案例:

案例一:多点的 TiDB 归档实战

多点作为新零售领域的代表企业,面临着典型的数据爆炸式增长挑战。他们的核心业务系统运行在 TiDB 集群上,随着业务规模扩大,数据量呈指数级增长,给存储和管理带来了巨大压力。传统的做法是将所有数据都保留在 TiDB 中,但这种方式的问题逐渐显现:不仅占用了大量存储资源,还影响了在线业务的查询性能。

技术团队意识到需要一个更高效的归档方案。他们选择了 Databend 作为归档目标,并使用了 db-archiver 这个专门的归档工具。这个工具的设计相当巧妙,支持多种数据源(MySQL、TiDB、PostgreSQL、Oracle 等),并且内置了智能的数据切片算法。

具体的归档流程是这样的:db-archiver 会根据用户配置的同步范围、线程数量和批次大小,自动将源端数据切分成多个小片段,然后通过多线程并行处理。每个线程会将抽取的数据攒批,生成 Parquet 或 JSON 格式的文件上传到对象存储,最后利用 Databend 的 COPY INTO 或 REPLACE INTO 命令完成数据导入。

在具体实施过程中,多点的工程师们发现了一个有趣的细节。最初同步速度并不理想,通过 db-archiver 内置的丰富监控指标,他们发现瓶颈出现在 upload stage(文件上传到对象存储的环节)。进一步排查发现,运行 db-archiver 的机器与目标对象存储不在同一个地域,产生了跨网段传输的性能损失。将部署节点调整到与源端、目标端相同的区域后,同步效率立即得到了显著提升。

最终的效果令人印象深刻。在压缩测试中,将 150GB 的 MySQL 数据分别导入 TiDB 和 Databend,TiDB 通过 RocksDB 实现了 6 倍的压缩比,而 Databend 达到了 8 倍的压缩比。但真正让人震惊的是成本数据:整体数据存储成本降低了 98%。

这个惊人的数字背后有三个关键因素:

首先是副本数量的差异。TiKV 需要维护 3 个副本来保证高可用,而 Databend 基于对象存储只需要一份数据(对象存储服务商会在后台处理冗余备份)。

其次是存储预留的问题。传统数据库通常需要预留 20-30% 的磁盘空间以防止写满,但对象存储可以按需扩展,无需预留。

最重要的是存储单价的巨大差异。对象存储相比普通 HDD 硬盘成本约为 1/10,相比 SSD 更是只有 1/30。综合计算:(1/3 副本) × (60% 磁盘利用率) × (1/10 磁盘价格) = 2% 的存储成本。

全文阅读:

https://mp.weixin.qq.com/s/kkfz0wlHA4_7QXJqymQxvw

案例二:OceanBase 到 Databend Cloud 的云原生归档

另一个案例展示了云原生架构在归档场景中的优势。某企业使用 OceanBase 作为核心数据库,随着业务发展面临同样的归档需求。他们选择了 Databend Cloud 作为归档目标,这个方案的亮点在于完全基于云基础设施,实现了真正的按需付费。

技术架构相当简洁:使用 db-archiver 连接 OceanBase 读取数据,写入 Databend Cloud,而 Databend Cloud 通过外部表将数据存储在用户自己的对象存储桶中。当不进行计算时,Databend Cloud 不会产生任何费用,只有对象存储的存储成本。

在具体实施中,他们遇到了一些有意思的技术细节。比如在创建外部表时,需要先建立与对象存储的连接:

CREATE OR REPLACE CONNECTION wubx_ossSTORAGE_TYPE = 'oss' ENDPOINT_URL='oss-cn-beijing-internal.aliyuncs.com' ACCESS_KEY_ID = '用户AK' ACCESS_KEY_SECRET = '用户SK';

然后创建外部表,指定数据在对象存储中的具体位置:

CREATE TABLE sbtest1 (id int(11) NOT NULL,k int(11) NOT NULL DEFAULT '0',c char(120) NOT NULL DEFAULT '',pad char(60) NOT NULL DEFAULT ''
) 
'oss://wubx-bj01/wubx/'
CONNECTION=(CONNECTION_NAME='wubx_oss'
);

db-archiver 的配置文件也展现了工具的灵活性。可以通过 sourceSplitKey 指定按主键 ID 切分,也可以通过 sourceSplitTimeKey 和 timeSplitUnit 实现按时间维度的归档。这种设计让工具能够适应不同的业务场景。

这个案例的优势在于完全利用了云上基础设施的弹性。存储按需付费,计算资源可以秒级伸缩,而且基于无运维架构,大大降低了维护复杂度。

全文阅读:

https://mp.weixin.qq.com/s/ynUcnfUFZGdiXIChpUKuRg

告别数据坟墓:重新思考历史数据的价值

随着企业数字化程度的不断加深,数据归档已经从单纯的"存储管理"问题演进为"数据资产管理"问题。传统的归档方案往往把历史数据当作负担,想方设法降低存储成本,但很少考虑这些数据的潜在价值。

现代的归档方案需要在三个维度上找到平衡:成本控制、数据可用性和分析能力。Databend 这样的云原生数据仓库恰好在这三个方面都有出色表现。它不仅大幅降低了存储成本,更重要的是让归档数据保持了"活性"——可以随时查询、分析,甚至进行机器学习训练。

从多点的 98% 成本降低,到 OceanBase 归档方案的云原生实践,这些真实案例证明了现代归档技术的价值。对于仍在使用传统归档方案的企业来说,现在是重新审视数据架构的好时机。继续把所有数据堆在单一的 MySQL 实例中,在成本、性能和数据价值挖掘上都不是最优选择。

同时,随着 AI 和机器学习技术的普及,企业对历史数据的需求会进一步增长。那些建立了现代化归档体系的企业,势必将在数据驱动的竞争中获得先发优势。

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式湖仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

👨‍💻‍ Databend Cloud:databend.cn

📖 Databend 文档:docs.databend.cn

💻 Wechat:Databend

✨ GitHub:github.com/databendlab…

http://www.dtcms.com/a/391672.html

相关文章:

  • 2025icpc网络赛第一场The 2025 ICPC Asia East Continent Online Contest (I)
  • docker中ngnix的路径配置
  • 什么是黑板架构风格?
  • Redis 三大核心模式(主从复制 / 哨兵 / 集群):完整部署与问题解析
  • Docker生产环境容器OOM问题定位:镜像内存泄漏还是主机资源不足?
  • AcWing385. GF和猫咪的玩具——Floyd算法
  • 75、封装paddle ocr v5服务支持昇腾800 900 、800I A2、300I DUO卡推理识别
  • 【一文了解】线程的使用
  • 电力系统暂态稳定计算与单机无穷大系统建模
  • OmniGen2 - 智源研究院推出的开源多模态生成模型
  • 【故障排查:JDK8中Files.lines方法错误使用导致的Linux服务器文件描述符泄漏问题】
  • 【multisim仿真电子秒表74LS90】2022-12-15
  • v-show 和 v-if 的区别及使用场景
  • 动态二维码杜绝代签,手机端配置同步,巡检数据更可靠
  • 数据库学习MySQL系列6、MySQL入门简单练习使用
  • 交互式生成对抗网络(iGAN)
  • RecSys: 推荐系统重排与多样性优化(MMR以及DPP算法)
  • 瑞芯微MPP音视频框架---mjpeg解码
  • 模型部署:(七)安卓端部署OCR文本识别项目全流程记录
  • 用html5写一个超级计算器
  • 手机实现真随机数生成器
  • 119.计数器产生中断(上升沿)计算方法,比如cnt[21:0],那么assign time = cnt[20]这样大致是多长时间产生一次中断
  • VSCode c/c++头文件函数点击无法跳转问题
  • `mysql_real_connect` 函数全面深度解析
  • 深入解析Yum元数据安全与Artifactory自动化原理
  • 第三章 强化学习助力优化
  • 使用角色和Ansible内容集合简化Playbook
  • 鸿蒙应用集成Push Kit 指南
  • 树莓派ubuntu20.04实现ROS noetic与Arduino通信
  • 【代码随想录算法训练营——Day17】二叉树——654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树