共计 2899 个字符,预计需要花费 8 分钟才能阅读完成。
MySQL 归档服务需要剖析
MySQL 罕用 OLTP 业务环境,个别会应用比拟好的硬件资源来提供对外服务。当初 MySQL 数据对外提供的数据动不动好几个 T 也是失常的。在很多业务中,数据有较强的生命周期,在线一段时间后,可能就是失去业务意义,如:
- 某个业务下线
- 业务数据超过服务周期,例如某个业务只须要近 3 个月的数据
- 业务操作的日志类型的数据进行归档
- 分库分表的数据库须要合并到同一个中央,提供统计查问及剖析能力
- 定期的备份归档,提供审计工作进行查问应用
这类工作是 DBA 提出归档计划,由开发人员提出对哪些数据能够归档,标准后能够借助于自动化的执行实现。
常见 MySQL 归档解决的形式
当初常见的归档形式个别分成两大类:MySQL & MariaDB,外围工具是: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 引擎的转换须要十分长的工夫,减少了复杂度
那么当初有没有更完满的计划呢?这里给大家给举荐云原生数仓 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 加对象存储来代替,这样的形式的长处:
- 基于对象存储根本能够实现容量有限
- Databend 数据压缩比拟高,失常情下能够做到 10:1,升高存储空间
- 能够基于 MySQL 协定治理数据,对应用上根本能够做到没有任何变动
- 存算拆散架构,对于计算层有余的状况下,能够十分不便的扩容,也毋庸放心存储的高可用
- 原来 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