分布式数据库 TiDB 在携程的实践
摘要
携程自2014年左右开始全面使用MySQL数据库,随着业务增长、数据量激增,单机实例逐渐出现瓶颈,如单表行数过大导致历史数据查询耗时升高,单库容量过大导致磁盘空间不足等。为应对这些问题,我们采取了诸多措施如分库分表的水平拆分、一主多从读写分离、硬件SSD升级、增加前端Redis缓存等,但同时也使得整个业务层架构更加复杂,且无法做到透明的弹性,因此开始将目光转移到分布式数据库以解决这些痛点。
近年来受到Spanner&F1的启发,基于CAP理论和Paxos、Raft协议作为工程实现的分布式数据库得到了蓬勃发展,从硅谷的CockroachDB到国产的TiDB都在社区产生了很强的影响力。携程也对这些产品从社区活跃度、用户规模、易用性等多个方面做了调研,最终选择了国产的TiDB。
TiDB是一个开源的NewSQL数据库,支持混合事务和分析处理(HTAP)工作负载,兼容大部分MySQL语法,并且提供水平可扩展性、强一致性和高可用性。主要由PingCAP公司开发和支持,并在Apache 2.0下授权。2018年11月我们开始TiDB的POC以及与携程现有运维平台的整合,2019年1月第一个线上应用正式接入,最初的目标只是保证数据库的可用性以及可以存储足够多的关系型数据。随着TiDB快速迭代,越来越多的功能进入社区,如HATP特性,让我们不局限于最初的目标,开始了新的探索。本文将介绍TiDB在携程业务场景中的运维实践,希望对读者有所帮助和参考。
欢迎在评论区写下你对这篇文章的看法。