大规模数据库为中国的Letgo供电,降低了维护成本

2020-09-22 转专 互联网

工业:电子商务

作者:纪浩东(专专DBA主管)

Transcreator:Caitin陈编辑器:汤姆政府高级官员

MySQL水平扩展,MySQL替代数据库

转专是一个网上二手商品交易平台。你可以把我们想象成“放开中国”。自2015年推出平台以来,我们取得了巨大的发展。2018年,我们拥有超过2亿用户,app和微信小程序月活跃用户超过5000万。

在早前帖子,我们讨论了为什么我们从MySQL迁移到TiDB,一个开源、分布式、混合事务/分析处理(HTAP)数据库,以及TiDB如何帮助我们的数据库实现水平伸缩。

今天,我将介绍如何做到这一点TiDB 4.0的新功能使TiDB更容易使用,并减少我们的操作和维护成本。

TiDB:不仅仅是一个水平扩展的数据库

当我们切换到TiDB,我们立即解决了两个数据库问题:

  • 分片导致复杂的应用程序逻辑。分片使我们的应用程序逻辑更加复杂,而多维映射会降低我们的整体性能。有了TiDB,我们不需要分片或编写复杂的逻辑。
  • 复杂的数据库操作和维护。TiDB可以快速横向扩展。DBA不需要迁移数据或应用程序流量。此外,大型表上的在线数据定义语言(DDL)操作几乎没有影响。

当我们升级到TiDB 4.0我们解决了更多的问题。请点击每期文章下面的链接,了解4.0如何帮助我们的详细信息。

TiUP部署集群的时间仅为1分钟

TiDB 4.0引入了一个新的组件管理工具,TiUP,这使得部署TiDB环境比以往更快。如果您以前想部署TiDB,但认为它太复杂或太耗时,那么TiUP可以解决这个问题。

例如,我们使用TiUP来部署三个TiDB实例、三个TiKV实例、三个Placement Driver实例和一个TiFlash实例一分钟.除了快速部署之外,TiUP还提供了大量我们可以使用的参数检查状态我们的集群。

Key Visualizer清楚地显示整个集群的热点

在早期,解决热点问题是很困难的。我们必须仔细地分析各种日志,直到找到问题所在。现在,TiDB 4.0引入了一个新的可视化工具,关键的可视化工具,可以快速直观地显示热点在我们集群的任何地方使用图形的热图

下面是一个例子:

可视化工具的热图的关键

可视化工具的热图的关键

热图:

  • x轴表示时间。
  • y轴表示键范围,以及键范围到表和索引的映射。
  • 颜色表示关键范围的读或写量。颜色越亮,读写量越高。
关键可视化工具:快速解决数据库性能问题

Key Visualizer图形化地显示系统状态,这有助于我们快速地排除数据库性能问题,并使我们能够深入了解我们的应用程序

TiDB仪表板有效地显示集群范围的信息

正如我前面提到的,确定集群的状态可能很困难。TiDB仪表板有效地解决了这个问题。TiDB仪表板图形界面各种内置小部件,使我们能够轻松诊断、监控和管理集群.在一个界面中,我们可以查看分布式集群的运行状态,并对集群进行管理,包括:

  • 快速找到星团热点
  • 分析SQL语句的执行性能
  • 观察慢速查询
  • 生成集群诊断报告
  • 查询和导出日志
  • 分析实例

我认为Dashboard是4.0版本的亮点之一,它使本已有用的产品变得更好。

TiDB仪表板

TiDB仪表板

了解概览页面

下图显示了TiDB仪表板的概述页面。它显示:

  • 数据库每秒查询流量(QPS)
  • 反应延迟
  • 节点状态
  • Alert-related信息

通过概述,我们可以快速发现集群的状态,快速定位问题,更好的使用TiDB。

发现慢速查询

TiDB Dashboard还可以让我们找到运行缓慢的查询。如慢速查询在下面的页面中,我们指定数据库、时间范围和要显示的查询数量。输出包括查询名称、执行时间和查询描述,您可以对结果进行排序。一旦我们得到列表,我们就可以快速定位我们感兴趣的查询。我们不再需要自己的提取、转换、加载(ETL)过程,也不需要自己去机器那里。

慢查询查看

慢速查询

SQL语句的分析

我们可以深入到特定的SQL语句,查看SQL语句模板、指纹ID、语句示例、查询执行计划,以及与事务相关的度量。当我们使用ETL过程时,我们没有很多这方面的信息。现在,通过SQL语句分析,我们可以看到一个慢速查询的执行阶段以及每个阶段的执行时间。这极大地改进了我们的整体SQL分析。

SQL语句的分析

SQL语句的分析

搜索日志

TiDB新的日志搜索功能允许我们搜索集群中所有实例的日志,预览搜索结果,并导出日志,这大大降低了我们的人力和开发成本。与搜索日志页,我们可以根据时间段、日志级别和实例找到日志。我们不再需要登录到每台机器并手动查看日志。真是节省时间。

查询和导出日志

查询和导出日志

TiFlash在不影响在线性能的情况下提取数据

在过去,提取数据会增加在线响应时间。TiFlash解决了这个问题,包括异步复制、一致性、智能选择和计算加速等特性。

在专专,我们主要在共享物理机主机和物理隔离上使用TiFlash。当我们向新机器添加一个TiKV节点时,请求是分离的。不同的请求发送到不同的后端数据节点,这样在提取数据时不会影响整体的在线性能。基于我们的应用程序和SQL语句的复杂性,TiDB自动选择使用TiFlash或TiKV,以确保最佳性能。如果要求提供在线数据,TiDB会选择TiKV。如果是离线数据请求,TiDB选择TiFlash。这是一种智能的选择机制。

TiFlash实时分析

TiDB包括TiFlash

备份&恢复快速备份和恢复非常大的集群

在TiDB 4.0之前,我们努力有效地备份我们的大型数据集群。我们使用逻辑备份,这确实不能满足我们的需要。

我们测试了TiDB 4.0的分布式备份和恢复工具,备份和恢复,并取得了良好的效果。在一个10gb的网络环境中,在120mb /秒的网络速度下,它花费了300gb数据备份到网络文件系统的时间小于10分钟

在120 MB/秒的速度限制下,通过网络文件系统恢复数据大约需要12分钟.备份和恢复大大减少了我们的备份和恢复时间。

另一个关键因素是备份的速度完全取决于我们拥有的TiKV实例的数量。我们拥有的TiKV实例越多,备份和恢复速度就越快。

TiKV的统一读取池流线型配置

TiDB 4.0还引入了一个新特性统一的阅读池.在4.0之前,我们必须配置和动态调整读池存储和Coprocessor,这可能会影响应用程序。我们发现配置和管理这些组件令人沮丧。

统一读池将存储和协处理器合并到一个线程池中。SQL查询自动确定是使用存储还是使用协处理器。这不仅提高了系统的可用性,而且解决了资源分布不均的问题。

未来的计划

TiDB 4.0引入了一些实验性的特性,如TiDB Dashboard、TiFlash和统一线程池,这些特性使TiDB比以往任何时候都更健壮、更容易使用。这个版本对我们有很大的帮助,我们甚至还没有完全采用它!

在未来,我们将全面升级到4.0版本。这个版本承诺简化数据库的操作和维护,这将使我们的数据库团队将更多的精力放在创新上。

如果你想了解更多关于TiDB的经验,你可以加入Slack上的TiDB社区

准备好开始使用TiDB了吗?