解读 GaussDB (for MySQL) 冷热存储分离实现原理
摘要:GaussDB (for MySQL) 冷热存储分离特性,支持用户直接针对 Innodb 的 page 进行归档和回迁操作,且无需调整上层业务即可访问冷数据。
本文分享自华为云社区《GaussDB (for MySQL) 新特性解读:冷热存储分离》,作者:GaussDB 数据库。
技术背景
业务长期运行,但随着时间推移,越来越多的数据被访问频率降低,从而变成为所谓的"冷数据"。若直接将这些冷数据删除,会面临数据丢失的风险以及高昂的恢复成本;若保持冷数据现有的存储方式不变,存储空间占用越来越多,存储成本将持续增加。
同时,在无法有效利用查询索引加速的情况下,数据表的记录膨胀会进一步降低查询效率。如若用户自己识别、分离并转存冷数据至低成本存储中,需要考虑诸多因素:
a. 如何构建脚本。从表中 dump 一行行冷数据到 OBS 等超低成本存储中,这需要借助其它计算资源完成;
b. 如何提升在线迁移效率,同时降低对现有业务性能的影响;
c. 如何保障数据一致性和可靠性,并在出现问题时快速处理;
d. 当导出的数据无法直接访问时,如何倒回到实例的表中;
…
这一系列问题,不仅涉及的改造工程量庞大,而且实施成本很高。
特性价值
GaussDB (for MySQL) 冷热存储分离新特性,支持冷表/分区可读和混合分区管理。
冷热存储分离特性能够通过一条简单 SQL 语句实现表/分区的灵活转储,并快速将物理页并行地从 CDE 转储到 OBS 中,单位存储成本最高可降低 90%。同时,冷数据在线可读写,确保现有的基于 Innodb 的访问方式,支持事务,满足数据一致性,访问冷表无需对业务进行改造。
此外,冷热存储分离特性还支持定义规则。通过自动创建分区和指定何时为冷分区并将其自动归档到OBS中,同时可指定“冷分区对查询计划不可见”(rds_schs_enable_partition_visible) 的模式,来提升对表中热数据的访问性能,实现冷热混合分区的统一高效管理。
实现原理
GaussDB (for MySQL) 冷热存储分离特性实现原理如下:
-
并行地从分布式存储中抽取冷数据对应的页面组装成 Object,并快速地将冷数据归档到 OBS 中,实现数据 0 丢失。
-
通过 meta 管理,使得数据操作涉及的 Page 可以快速实现定位和寻址。
-
通过 meta 管理,转储过程支持断点续传,即用户可以重试数据转储操作,确保已转储的数据无需重复转储,从而在 HA(高可用性)故障恢复中显著提高重做效率。
-
归档的数据支持备份恢复的能力,支持按指定时间点进行恢复,且恢复后这些被归档的数据能够快速投入使用。
-
通过“多版本快照的 Lock free”这一转储方式,在任何时刻,被归档的表都能够无阻塞地进行数据操作。
-
无需使用 Innodb Buffer Pool 等性能关键的资源,不仅对主机资源占用小,CPU 和内存占用始终在 10% 以下,还能提供转储过程中的流控能力,从而最大程度地避免因争抢公共 IO 资源而影响业务。
业务场景/流程
1. 新实例开启冷热存储分离
登录管理控制台,在云数据库 GaussDB (for MySQL) 的“实例管理”页面,单击目标实例名称,进入基本信息页面。在左侧导航栏,点击“冷热分离”,在“冷热分离”右侧点击图片,在弹框中点击“确定”,打开冷热分离开关。
2. 使用冷热存储分离
下面采用 DAS 数据管理服务,通过 SQL 命令来介绍冷热存储分离特性的使用。
1)创建冷表
CALL dbms_schs.make_io_transfer("start", "库名", "表名", "分区名", "", "obs");
例如:
CALL dbms\_schs.make\_io_transfer("start", "test", "table1", "", "", "obs");
2)回迁冷表
CALL dbms_schs.make_io_transfer("start", "库名", "表名", "分区名", "obs", "");
例如:
CALL dbms\_schs.make\_io_transfer("start", "test", "table1", "", "obs", "");
3)查询归档或回迁状态
CALL dbms_schs.show_io_transfer("库名", "表名", "分区名");
例如:
CALL dbms\_schs.show\_io_transfer("test", "table1", "");
总结
GaussDB (for MySQL) 冷热存储分离特性,支持用户直接针对 Innodb 的 page 进行归档和回迁操作,且无需调整上层业务即可访问冷数据。另一方面,在支持分区进行冷热存储分离的基础上,还支持混合分区管理,使得用户在不变更业务的情况下,可以灵活选择在查询时是否快速过滤冷分区。
附录
本文作者:华为云 GaussDB (for MySQL) 团队

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
兼容Trino Connector,扩展Apache Doris数据源接入能力|Lakehouse 使用手册(四)
Apache Doris 内置支持包括 Hive、Iceberg、Hudi、Paimon、LakeSoul、JDBC 在内的多种 Catalog,并为其提供原生高性能且稳定的访问能力,以满足与数据湖的集成需求。而随着 Apache Doris 用户的增加,新的数据源连接需求也随之增加。因此,从 3.0 版本开始,Apache Doris 引入了 Trino Connector 兼容框架。 Trino/Presto 作为业界较早应用于湖仓查询、联邦分析的计算引擎,以广泛的数据源对接能力闻名。支持包括 Hive、Iceberg、Hudi、Paimon、Delta Lake、Kudu、BigQuery、Redis、Kafka 在内的数十种数据源,而这一能力主要得益于其插件化的 Connector 框架。Apache Doris 为快速提升数据接入能力与扩展性,并减少对每个数据源支持的开发工作量,选择兼容现有的 Connector 框架是一种高效且合理的解决方案。 通过兼容 Connector 插件,Apache Doris 能够支持 Trino/Presto 可对接的所有数据源,而无需改动 ...
- 下一篇
RuleGo v0.24.0 发布:国产轻量级、全场景、新一代组件编排规则引擎
RuleGo 是一个基于 Go 语言的轻量级、高性能、嵌入式、组件编排新一代规则引擎。它可以帮助你快速构建低耦合、灵活的系统,实现复杂的业务逻辑。RuleGo 还提供大量可复用的组件,支持对数据进行聚合、过滤、分发、转换、丰富和执行各种动作,也能和各种协议、系统进行联动和集成。让你快人一步实现自动化营销、物联网、应用集成等解决方案。 该项目在低代码、业务代码编排、数据集成、工作流、大模型智能体、边缘计算、自动化、IoT 等多种场景具有广泛的应用潜力。 典型使用场景 边缘计算: 可以在边缘服务器部署 RuleGo,对数据进行预处理,筛选、聚合或者计算后再上报到云端。数据的处理规则和分发规则可以通过规则链动态配置和修改,而不需要重启系统。国产替代node-red系统。 物联网: 收集设备数据上报,经过规则链的规则判断,触发一个或者多个动作,例如:发邮件、发告警、和其他设备或者系统联动。 数据分发: 可以根据不同的消息类型,调用 HTTP、MQTT 或者 gRPC 把数据分发到不同系统。 应用集成: 把 RuleGo 当做胶水连接各种系统或者协议,例如:ssh、webhook、kafka、消...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- 2048小游戏-低调大师作品
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Hadoop3单机部署,实现最简伪集群