MariaDB Spider:实现MySQL横纵向扩展的小能手

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:
+关注继续查看
   

什么是Spider?

  

 

当您的数据库不断增长时,您绝对需要考虑其它技术,如数据库分片。Spider是MariaDB内置的一个可插拔用于MariaDB/MySQL数据库分片的存储引擎,充当应用服务器和远程后端DB之间的代理(中间件),它可以轻松实现MySQL的横向和纵向扩展,突破单台MySQL的限制,支持范围分区、列表分区、哈希分区,支持XA分布式事务,支持跨库join。通过Spider,您可以跨多个数据库后端有效访问数据,让您的应用程序一行代码不改,即可轻松实现分库分表!

 

分库分表架构:

 

20170420095837809.jpg

 

应用程序连接Spider,Spider充当中间件代理,将客户端查询的请求,按照事先定义好的分片规则,分发给后端数据库,之后返回的数据汇总在Spider内存里做聚合,最终返回客户端请求,对于应用程序而言是透明的。

 

典型案例---腾讯游戏

 

20170420095854412.jpg

 

腾讯游戏的生产环境数据量达到了100TB,用了396个Spider节点做数据拆分,分片后的数据用了2800个MySQL节点存储。

 

   

使用场景介绍

  

 

下面介绍一下我负责的一个项目,已通过Spider实现了历史表的垂直拆分。

 

随着业务的增长,单台服务器磁盘空间有限,有些业务上的历史数据,DBA用工具pt-archiver归档后,历史表就没有用了,通常我们会把它单独迁移到备份机,主库上就删除了。但有的时候,BI统计部门来了一个需求,需要临时关联查询这些历史表,那么,DBA就需要从备份机上myloader导入到从库上去,为了降低导数据引起的从库CPU升高、磁盘IO的瞬间增大,可能造成主从复制的延迟。

 

为了减少这种重复性的体力工作,为了更快速地缩短可用时间,我们可以通过Spider引擎解决,通过它你可以将远程服务器上的表做一个映射,做一个软连接,相当于你操作本地的表一样,简单而便捷,省去了那么多麻烦,临时提供给业务方用,也不用考虑过多的性能问题。

 

架构图如下:

 

20170420095916200.jpg

 

实施这个方案,选择Spider引擎是有优势的:

 

SQL解析和查询优化是个非常复杂且很难做好的工作,其它替代产品都是自己实现,由于复杂性,这些产品都带来了一些限制,比如不支持存储过程、函数、视图等,给使用和实施带来了困难。而作为一个存储引擎,这些工作都由MariaDB自身完成了,可以方便地将大表做分布式拆分,和Fabric相比,它的好处是对业务方使用是透明的,SQL语法没有任何限制,在不改变现有DB架构的方案中,侵入性最小。

 

内部原理架构图如下:

 

20170420095927556.jpg

 

 

我们在一台从库上,安装上Spider引擎,只需两条命令做一个表的“超链接”,分分钟就解决了问题。

 

注:前提是你的从库使用的是MariaDB10。

 

下面是官方的垂直拆分压测报告:

 

20170420095943514.jpg

 

 

而在我的压测结果上,分库分表的性能会降低70%,垂直拆分性能会降低40%,性能损耗的原因是在分布式场景下,要保证2pc的一致性和可用性,读写的表现就差,另外就是跨多个网络传输这两方面引起的,目前为RC公测版本V3.2.37,固在主库上实现该功能要慎重!

 

   

Spider引擎安装

  

 

# mysql -uroot -p

\

   

Spider引擎使用

  

 

  • 垂直拆分

 

1、定义后端服务器和数据库名字

 

\

 

这里后端服务器的名字为backend1,数据库名字为test,主机IP地址为192.168.143.205,用户名为user_readonly,密码为123456,端口为3306。

 

注:如配置错误,可直接DROP SERVERbackend1; 重新创建即可。

 

2、创建表的“超链接”


\

 

这里通过设置COMMENT注释来调用后端的表,然后你就可以查看sbtest表了,是不是很简单?

 

  • 分库分表


\

 

同上,但区别是分库分表是采用了类似表分区的概念实现。

 

可调优参数

 

spider_conn_recycle_mode= 1

连接复用,类似连接池这种功能

 

optimizer_switch= 'engine_condition_pushdown=on'

引擎下推,查询推送到后端数据库,将查询结果返回给Spider做聚合

 

负载均衡架构设计

 

由于Spider自身不保存数据,只保存路由信息,是无状态的,因而可以部署多个Spider做负载均衡,架构图如下:

 

20170420100014757.jpg

 

后端MySQL可以结合MHA实现高可用故障切换。

 

注:在MariaDB10.2版本里,Spider准备GA。

 

原文发布时间为:2017-04-20

本文来自云栖社区合作伙伴DBAplus

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
9天前
|
人工智能 关系型数据库 OLAP
慧博科技「H-AI」智能助手引入阿里云AnalyticDB,开启商家智能数字化时代
依托于阿里云瑶池数据库AnalyticDB,推出一站式AIGC解决方案
|
14天前
|
运维 关系型数据库 OLAP
阿里云百炼 x AnalyticDB向量引擎, 搭积木式轻松开发专属大模型应用
对大模型应用跃跃欲试,但奈何技术栈复杂难以下手?已经进行试水,但缺乏调优手段无法保障召回率和问答准确度?自行搭建大模型、向量检索引擎、服务API等基础组件难以运维?大模型种类繁多,但缺乏行业模型和应用模板?阿里云百炼 x AnalyticDB向量引擎推出一站式企业专属大模型开发和应用平台,像搭积木一样轻松完成企业专属大模型应用的开发,提供应用API,可一键接入企业自己的业务应用对外提供服务。
272 0
|
20天前
|
SQL 分布式计算 关系型数据库
阿里云AanalyticDB MySQL湖仓版,降价23%!
阿里云云原生数据仓库AnalyticDB MySQL版是基于湖仓一体架构打造的实时数仓,高度兼容MySQL,支持毫秒级更新,亚秒级查询。 无论是数据湖中的非结构化或半结构化数据,还是数据库中的结构化数据,您都可使用AnalyticDB MySQL版构建企业的数据分析平台,同时完成高吞吐离线处理和高性能在线分析,实现降本增效。
阿里云AanalyticDB MySQL湖仓版,降价23%!
|
20天前
|
存储 人工智能 关系型数据库
5倍性能提升,阿里云AnalyticDB PostgreSQL版新一代实时智能引擎重磅发布
2023 云栖大会上,AnalyticDB for PostgreSQL新一代实时智能引擎重磅发布,全自研计算和行列混存引擎较比开源Greenplum有5倍以上性能提升。AnalyticDB for PostgreSQL与通义大模型家族深度集成,推出一站式AIGC解决方案。阿里云新发布的行业模型及“百炼”平台,采用AnalyticDB for PostgreSQL作为内置向量检索引擎,性能较开源增强了2~5倍。大会上来自厦门国际银行、三七互娱等知名企业代表和瑶池数据库团队产品及技术资深专家们结合真实场景实践,深入分享了最新的技术进展和解析。
5倍性能提升,阿里云AnalyticDB PostgreSQL版新一代实时智能引擎重磅发布
|
2月前
|
弹性计算 数据可视化 关系型数据库
2023 云栖大会 | 「动手实践」基于阿里云构建博学谷平台实时湖仓
2023 云栖大会来啦,众多主题活动与你同聚,门票免费领取中,数量有限,先到先得!
421 0
2023 云栖大会 | 「动手实践」基于阿里云构建博学谷平台实时湖仓
|
2月前
|
SQL 监控 关系型数据库
数据库高效“体检”必备!详解阿里云AnalyticDB一键诊断功能
AnalyticDB MySQL诊断监控平台提供指标监控、查询和建表诊断、库表优化等多项诊断调优能力
数据库高效“体检”必备!详解阿里云AnalyticDB一键诊断功能
|
2月前
|
SQL 监控 关系型数据库
数据库高效“体检”必备!详解阿里云AnalyticDB MySQL一键诊断功能
AnalyticDB MySQL诊断监控平台则是一套全自研的、从零开始搭建的并紧密贴合分析型系统特征的诊断平台,包含数据的采集(诊断日志和监控数据)、数据缓存(削峰填谷)、清洗转换以及存储等,最终以多种服务形式提供实时的告警、监控、负载洞察、查询分析和诊断等功能。
|
3月前
|
分布式计算 关系型数据库 MySQL
【湖仓一体】阿里云AnalyticDB MySQL基于Flink CDC+Hudi实现多表全增量入湖实践
湖仓一体(LakeHouse)是大数据领域的重要发展方向,提供了流批一体和湖仓结合的新场景。阿里云AnalyticDB for MySQL基于 Apache Hudi 构建了新一代的湖仓平台,提供日志、CDC等多种数据源一键入湖,在离线计算引擎融合分析等能力。本文将主要介绍AnalyticDB for MySQL基于Apache Hudi实现多表CDC全增量入湖的经验与实践。
|
3月前
|
存储 SQL 监控
阿里云“玩转云上 StarRocks3.0 湖仓分析”训练营火热报名中,开启数据分析新范式
阿里云 EMR OLAP 团队与 StarRocks 社区联合出品,玩转云上 StarRocks3.0 湖仓分析训练营,围绕 StarRocks3.0 系列解读、EMR Serverless StarRocks 存算分离功能与应用场景介绍,开启数据分析新范式!
677 0
热门文章
最新文章
推荐文章
更多