[版本更新] PolarDB-X on OSS 提供冷热数据分离存储
架构简介
PolarDB-X 采用 Shared-nothing 与存储分离计算架构进行设计,系统由 4 个核心组件组成。
计算节点(CN, Compute Node)
计算节点是系统的入口,采用无状态设计,包括 SQL 解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务 2PC 协调、全局二级索引维护等,同时提供 SQL 限流、三权分立等企业级特性。
存储节点(DN, Data Node)
存储节点负责数据的持久化,基于多数派 Paxos 协议提供数据高可靠、强一致保障,同时通过 MVCC 维护分布式事务可见性。
元数据服务(GMS, Global Meta Service)
元数据服务负责维护全局强一致的 Table/Schema, Statistics 等系统 Meta 信息,维护账号、权限等安全信息,同时提供全局授时服务(即 TSO)。
日志节点(CDC, Change Data Capture)
日志节点提供完全兼容 MySQL Binlog 格式和协议的增量订阅能力,提供兼容 MySQL Replication 协议的主从复制能力。 开源地址:[https://github.com/ApsaraDB/galaxysql]
版本说明
3 月底,PolarDB-X 正式发布 2.1.0 版本,包含了四大核心特性,全面提升 PolarDB-X 稳定性和生态兼容性,其中包含基于 Paxos 的三副本共识协议。
4 月底,PolarDB-X 正式发布 2.1.1 版本,重点推出冷热数据新特性,可以支持业务表的数据按照数据特性分别存储在不同的存储介质上,比如将冷数据存储到 Aliyun OSS 对象存储上。
冷热数据分离存储业务价值:在数据库使用过程中,每天有大量的数据写入和更新。然而,通常只有时间邻近的,如一个月内,甚至一周内的数据才会被频繁更新和访问。而剩下的大量数据,都默默躺在磁盘的角落中,给存储空间带来了极大的浪费,也增加了数据库维护的成本。我们将前者中提到的频繁访问数据称为热数据,后者则称为冷数据。冷数据虽然不被频繁访问,却是十分具有价值的。它记录着用户的历史数据,例如电商的历史订单、银行系统的历史交易记录等。这些访问需求对个人用户来说是低频的,但放到整个电商用户群体,或是银行用户群体中,则是一份不小的 workload。冷数据的分析处理能给用户带来很多商业上的 insight,帮助用户做出决策。
更多技术细节查看:[PolarDB-X on OSS: 冷热数据分离存储 - 知乎]
使用例子
快速配置 OSS 存储
安装完成后连接 PolarDB-X 集群,通过如下 SQL 命令进行 OSS 存储初始化: 例子:
file_uri: OSS 存储 uri
endpoint: OSS 存储 end-point
access_key_id: Access Key
access_key_secret: Secret Key
注 1:(关于 endpoint 参数):在阿里云 OSS 产品界面,通过“对象存储-Bucket 列表-bucket-概览”可以获取到一组 endpoint(地域节点)信息。仅当在相同 Region 的 ECS 部署环境下,使用经典网络访问或 vpc 网络访问 endpoint。否则使用外网访问 endpoint。
注 2:通过执行 show file storage 语句来验证是否配置成功。
本地磁盘存储配置
对于没有 OSS 但希望体验用户,可以通过磁盘模式模拟 OSS,比如将挂载一个 NFS 协议的网盘 注意:file_uri 为 CN 节点能访问的数据目录路径,如果你无法保证多个 CN 能够共同访问这一数据目录路径,请限制 CN 节点个数为 1 个。
通过如下命令进行本地磁盘存储初始化: 例子:
建表时存储引擎改为
即可使用本地磁盘存储,例如:
开始体验
注:例子中的存储引擎都会以
展示,如果你使用的是本地存储请修改为
Hello World
TTL 分区
Innodb 数据自动过期并归档到 OSS 存储上示例 注:例子中的存储引擎都会以
展示,如果你使用的是本地存储请修改为
Sysbench
数据准备
下载 Sysbench 压测工具包 sysbench.tar.gz
准备压测配置
创建配置文件 sysb.conf,将 PolarDB-X 连接信息填入配置文件,其中配置文件以及主要参数的解读如下:
参数说明:
percentile:响应时间采样的百分位;
histogram:是否展示响应时间分布直方图;
report-interval:显示实时结果的时间间隔,单位为秒;
time:压测时长,单位为秒;
rand-type:随机数的分布模式。
创建数据库 sysbench
导入压测数据
将导入数据转换到 OSS 存储引擎
调整压测库为 oss_sysbench
修改 sysb.conf 中 mysql-db='oss_sysbench'
执行压测
TPC-H
建立数据库及表结构
数据准备
下载 TPC-H 脚本工具包tpchData.tar.gz 解压
修改 param.conf 配置文件,填入 PolarDB-X 实例的连接信息:
具体填入的值包括: {HOST}:主机名 {PORT}:端口号 {USER}:用户名 {PASSWORD}:密码 {DB}: 数据库名 如果希望更高效地生成数据,可调大脚本中 threadsPerWorker 的值。
执行脚本,生成 1 GB 的数据:
可以在 tpch/tpchRaw/SF1/目录下查看到生成的数据
导入数据到 PolarDB-X 实例
校验数据完整性
将导入数据转换到 OSS 存储引擎
采集统计信息
测试 TPC-H 22 条 Query
下载测试脚本tpch-queries.tar.gz 并解压:
运行脚本,执行查询并计时
结尾
PolarDB-X 冷热分离存储充分利用了 OSS 服务成本低、容量大的优良特性,将冷数据快速高效地从在线库中剥离出来,减轻了在线数据维护压力、以及在线库的规模成本,降低了全量数据的存储成本。同时,提供与 MySQL 兼容的访问方式,兼顾点查(sysbench)与分析型查询(tpc-h)的性能,并支持大数据产品的接入。
参考链接
评论