地产TiDB使用初探索
业务介绍
- 公司主要涉及地产开发、商业运营、智慧服务、长租公寓四大主航道业务,这次TiDB初探主要使用在智慧服务场景,智慧服务的服务业态涵盖了住宅、商业、公建及城市等的物业管理服务。
- 跟业务介绍完TiDB特点后决定将物业能耗业务接入TiDB,主要考虑到TiDB比MySQL好的两个优势,分库分表和运维复杂度。
- 业务数据不断增长,能耗信息保留周期较长,现数据使用分库分表方式存储
现状&目的
- 现在业务数据存放于MySQL的分库分表中,分布为8个实例、320个分表,单表行数在4千万行。SQL单次执行在2s左右,在业务并发升高时响应超过10s,业务无法接受。
- 数据保留周期还需更长,单表面临的数据量会更大,业务响应时间会更长,这将面临再次进行分库分表。业务有较多的OLAP类统计需求,二次分表和新增统计需求增加了逻辑复杂度。TiDB上不用在考虑分库分表,不用写更加复杂的逻辑。
- TiDB可实现快速水平扩展,不用DBA进行复杂的数据搬迁,对业务可做到几乎无感知。
准备和测试
-
对现有问题梳理后结合现在TiDB特点我们想到可以试试TiDB,随即今年9月搭建4.0.6版本的TiDB功能和新能测试,用来与现有MySQL进行对比。
-
主要对查询统计类业务进行压测;
- 环境:MySQL 8c32G 8个单节点,TiDB 8c32G的6节点集群,磁盘都为ssd。
- 测试结果:相同接口响应时间MySQL比TiDB长2.5倍左右。 但发现在单SQL修改数据量大时MySQL会更快些,把大事务分成小事务并行修改效果不比MySQL差。
下图是能耗统计接口的压测数据:
整个测试从9月初进行到了10月,测试服务预期,解决我们最主要的分库分表统计复杂的问题。TiDB统计类接口处理更快,随着并发增加更明显。
TiDB的使用
【使用架构】
- 刚上线大半月先解决分库分表问题,使用DM拉去MySQL全量和增量数据到TiDB,DM对分库分表进行合并。
【使用现状】
-
业务
- TiDB作为多个MySQL的从节点,负责线上数据的聚合存储,应用数据统计分析服务。
-
集群
- 测试集群:4.0.6,前期的功能和新能测试。
- 线上集群:4.0.8,90%的统计分析服务。
- 4.x 集群一键部署方便快捷,提升自动化运维效率。
- DM 2.0 同步MySQL数据到TiDB。
-
数据同步
- dm实时同步8个分片数据到TiDB集群。
【解决问题】
- 提升了统计类接口响应时间。
【业务迁移】
- 时间较短,现只将统计分析类服务迁移至TiDB,其他服务还在逐步迁移中。因为OLAP场景业务直接修改链接地址。
成效
统计分析业务响应时间提升了3倍左右,高并发情况下提升更高。
统计类新需求缩短一定的开发时间。
未来规划
我们刚开始初步探索TiDB使用,经过前期的测试、各方的沟通协调,这次初体验情况,我们看好 TiDB 的发展。
后续我们会推进更多的业务场景使用,TiDB成为DBA团队正式纳管数据库技术栈。
我们刚开始使用,部分功能还在逐步完善中,监控展示TiDB还是独立的一套,关键指标需要统一接入到监控平台便于查看。
现TiDB作为MySQL的从库还未对TiDB做备份策略,本月要完成TiDB定期备份。