关于mysql:利用云原生数仓-Databend-构建-MySQL-的归档分析服务

39次阅读

共计 2899 个字符,预计需要花费 8 分钟才能阅读完成。

MySQL 归档服务需要剖析

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

  • 某个业务下线
  • 业务数据超过服务周期,例如某个业务只须要近 3 个月的数据
  • 业务操作的日志类型的数据进行归档
  • 分库分表的数据库须要合并到同一个中央,提供统计查问及剖析能力
  • 定期的备份归档,提供审计工作进行查问应用

这类工作是 DBA 提出归档计划,由开发人员提出对哪些数据能够归档,标准后能够借助于自动化的执行实现。

常见 MySQL 归档解决的形式

当初常见的归档形式个别分成两大类:MySQL & MariaDB,外围工具是:pt-archive 或是解析 binlog 获取归档的数据。

  • 首先说第一类应用 MySQL 存储归档

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

该形式的长处:

  1. 基于 MySQL 环境,大家都相熟好治理
  2. 和线上环境根本能放弃同一个版本及高度的兼容
  3. 归档环境能够应用大容量便宜的磁盘构建

当然这种归档服务也有以下的毛病:

  1. 这种架构通常为了老本,归档节点通常没开启 Binlog,真正的备份还会放到对象存储中一份,也没有从库,如果产生数据损坏,或是硬盘损坏,数据恢复周期长。
  2. 计算能力不够,根本没有能力对计算节点扩大,如果须要计算,通常须要把数据抽出来放到大数据环境中计算。
  3. 这种架构存在大量的 CPU 和 RAM 资源的闲置
  • 第二类:应用 MariaDB 归档

MariaDB 推出一个试验个性:S3 engine 该引擎有较高的较压缩能力,根本也放弃了 MySQL 的应用习惯。归档流程:先写 InnoDB,而后 alter table tb_name engine=s3;

该计划的长处:

  1. 根本放弃了 MySQL 兼容能力
  2. 存储上反对 s3 类对象存储
  3. 反对高压缩存储

该计划的毛病:

  1. s3 引擎只能读,不能写
  2. 不反对减少写入,如需扭转还须要转成 InnoDB 表
  3. 每次 InnoDB 到 s3 引擎的转换须要十分长的工夫,减少了复杂度

那么当初有没有更完满的计划呢?这里给大家给举荐云原生数仓 Databend

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

部署形式

反对 MySQL,Clickhouse,SQL Over Http 三种形式的解决。

装置形式参考:https://databend.rs/doc/deploy

装置及应用中如果遇到问题,请增加 Wx:  82565387 取得反对。

数据写入形式

Insert  into 写入

反对 jdbc, python, golang 进行 insert 写入,举荐浏览:https://databend.rs/doc/develop

如果要应用 insert 写入,倡议应用 Bulk insert 减少批量写入。这个应用上和 MySQL 没有什么区别,所以这里就不过多介绍了。

Streaming load

Streaming load 语法参考:https://databend.rs/doc/load-…

从下面图上能够看到 81 G 的文件,近 2 亿数据导入 Databend 只须要 3 分钟多一点。

另外当初 Databend 也反对间接读取压缩文件。例如:

 ls ./dataset/*.csv.gz|xargs -P 8 -I{} curl -H "insert_sql:insert into ontime format CSV" -H "skip_header:1"   -H "compression:gzip" -F "upload=@{}" -XPUT http://root:@localhost:8000/v1/streaming_load 间能够晋升。

读取压文件这块只是性能上跑通,但性能上不是最佳的形式,同样的数据应用压缩文件读取,当初大略须要 13 分钟,这个后续应该有不少空间能够晋升。

基于 stage 写入

Stage 能够了解 Databend 的一个网盘治理性能。具体语法参考:https://databend.rs/doc/load-…

在以上 PPT 中展现了 stage 的创立,文件上传,文件查看,通过 copy into 的命令能够把 Stage 的文件间接加载到 Databend 的表中。

利用 Databend 归档 MySQL 取得的劣势

对于须要思考 MySQL 归档的场景,倡议能够思考应用 Databend 加对象存储来代替,这样的形式的长处:

  1. 基于对象存储根本能够实现容量有限
  2. Databend 数据压缩比拟高,失常情下能够做到 10:1,升高存储空间
  3. 能够基于 MySQL 协定治理数据,对应用上根本能够做到没有任何变动
  4. 存算拆散架构,对于计算层有余的状况下,能够十分不便的扩容,也毋庸放心存储的高可用
  5. 原来 MySQL 生态的工具根本能够重用

Databend 当初对象存储反对:AWS S3, Azure, 阿里云,腾讯云,青云,金山云以及 minio,ceph 等设施。同时 Databend 的计算能力惊力,如果须要剖析,能够间接 Databend 间接进行计算。

利用 Databend 能够帮着用更不便的应用好云上的资源,让用户能够取得足够的性能及较低的老本。如果你对该计划有趣味理解更多,也能够增加微信:82565387 进行交换。

对于 Databend

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

  • Databend 文档:https://databend.rs/
  • Twitter:https://twitter.com/Datafuse_…
  • Slack:https://datafusecloud.slack.com/
  • Wechat:Databend
  • GitHub:https://github.com/datafusela…


文章首发于公众号:Databend

正文完
 0