作者:刘春雷

原文来源: https://tidb.net/blog/f40b0eb4

58同城TiDB4.0报告
–刘春雷 58DBA

1、前言

58同城自2018年6月左右开始上线2.0版本,2019 年 5 月 3.0版本发布,58积极跟进新版本的测试、调研等,对线上20套+集群进行版本升级,提升了稳定性与性能。

2020年4月发布4.0 RC版,58同城同样进行版本升级,新版本带来了性能、稳定性的提升,TiFlash的引入,提升了OLTP业务的能力、dashboard等的引入使DBA更了解了数据库的状态。

历经2个月左右的时间,已经将线上的40套3.0.7 升级为4.0.2版本,且部署了2套TiFlash。并同时对于4.0版本的自动化运维进行了相应工具开发改造。达到平台自动化部署、扩容等要求。

2、58同城TiDB数据库情况

58同城TiDB数据库业务涵盖公司10多条业务线,有多种场景的应用,例如数仓、日志、监控、报表平台、聊天信息、信安数据、客服等。

【增长趋势如图】:

3、升级4.0版本

3.1、升级方式

使用Ansible升级,或者TiUP方式测试均可以,官方推荐TiUP进行版本升级。

3.2、升级量

升级线上40套TiDB集群,版本为3.0.7,4.0.0-rc.2 ,升级至4.0.2

3.3、升级准备工作

  • 修正目录权限,/home/tidb 目录 要chown 下权限
  • 集群的node_exporter_port,blackbox_exporter_port端口修正为一致,扩缩容方式
  • TiUP导入inventory.ini配置文件,tiup cluster edit-config修正配置文件
  • tiup cluster display查看状态

3.4、升级效果

有些集群升级后提升明显,例如某集群SQL执行时间降低93%,大部分集群SQL执行时间下降10-20%左右,也有部分集群SQL执行时间增加的情况,大致原因是升级后QPS量增加了,集群压力增大,SQL执行时间增加了一些

【举例提升明显的集群】

3.5、升级避坑指南

  • 问题:TiUP在线版本升级容易存在网络下载失败的情况。
  • 处理:重试即可
  • 问题:TiUP离线版本升级,下载对应的新版本要注意下载目录的大小,容易有目录大小不对的情况
  • 处理:注意目录大小,重新下载
  • 问题:TiUP使用:曾导致TiKV被异常停服、删除,导致线上服务受了影响。原因为没有指定对应的版本,导致某些包找不到就给tikv下线了…
  • 处理:使用对应版本(目前新版本已经修复,可以使用新版本操作旧版本的TiDB了)
  • 问题:长时间运行的TiKV重启需要比较长的时间,会存在重启TiKV超时的情况
  • 处理:再次执行,或者调整等待重启的时间
  • 问题:TiUP导入inventory.ini,如果是自定义了node_exporter_port,blackbox_exporter_port端口,会报升级报找不到服务
  • 处理:要tiup cluster edit-config 查看下具体配置,需要手动更改成正确的端口,且提前要修正为所有节点这2个端口要一致的!
  • 问题:TiUP 导入配置重新命名的集群名字是不能被后期再修改的
  • 处理:官方也无法处理,导入重新命名要慎重
  • 问题:TiUP升级前,目前权限导致升级失败
  • 处理:例如/home/tidb 目录 要chown 下权限
  • 问题:TiDB 4.0版本,低版本存在部分bug(有一定宕机率的问题、及官方给的bug)
  • 处理:推荐升级至4.0.2 版本及以上
  • 问题:升级4版本会导致prometheus的api内部的端口变化,导致有些监控没有数据,以及升级存在导致prometheus的部分api数据不对
  • 处理:需要使用tiup reload下监控节点
  • 问题:如果升级中途失败过,可能导致某些TiKV节点成为 evict-leader-scheduler
  • 处理: pd-ctl 查看,执行scheduler remove evict-leader-scheduler
  • 问题:如果系统内核版本过低,存在内存使用过高导致宕机
  • 处理:推荐使用高版本内核,否则会触发内核bug
  • 问题:升级后,SQL执行时间有所变长
  • 处理:可能存在升级后,SQL执行效率好了,导致QPS升高,流量大了,反倒导致SQL执行时间有所变长,需要参考着看

4、TiUP运维使用姿势

  • 问题:在线 or 离线?
  • 考虑网络安全,推荐离线,升级的话可以临时开外网权限,进行打包,或者其他机器下载后上传
  • TiUP自动化使用:
  • 58这边:开发工具,根据元信息自动生成相关节点的拓扑yaml文件,然后自动化执行扩缩容等,目前已经支持3.0/4.0版本的部署、扩缩容tidb/pd/tikv等自动化,与CDB(内部数据库自动化平台)联动
  • DBA拓扑登录工具:快速展示store、member、配置等信息
  • 更改pd-ctl 为tiup ctl pd -u ' http://IP :Port
  • 集群部署、扩缩容自动化工具,添加运维方式
  • 3版本为Ansible方式,4版本使用TiUP方式

5、日常使用经验

情况:58同城初期为多集群的TiDB混合部署

问题:导致存在多集群相互影响的问题,例如某个集群的慢SQL,会影响其他集群,排查问题需要查看多个监控

处理:TiDB节点虚拟化,独立部署。解决了相互影响问题

情况:TiKV节点多集群混合部署

问题:导致集群负载过高

处理:调整TiKV的capacity,及CPU设置等,且单TiKV机器限制混合部署数量,或者使用更好的磁盘,例如闪存卡等

情况:单机群多库

问题:内部相互影响

处理:拆~拆~拆~,大的库迁移出去,且在上线之初评估好库情况,或者前期可以先使用mysql,后期量大了再迁移至TiDB

情况:单机群不宜过大

问题:目前以58同城的TiDB数据库情况来看,大于15T左右,集群的性能会稍微有所下降,且备份也是难题。

处理:及时清理、归档数据,不宜多个库放一个集群,最好控制下单集群的存储量,开启静默region,关注集群SQL执行时间与存储量的关系。

情况:TiKV机器SSD 、闪存卡

问题:TiVK机器,内存及CPU相比磁盘IO瓶颈不大,如果磁盘IO性能不好,会导致SQL执行时间变长,且不能混合部署,导致资源浪费。

有些时候,集群SQL执行时间长,扩容TiKV的SSD机器,并不能很好的提升效率,改成同样数量的闪存卡提升明显。

处理:如果可以,推荐闪存卡,我们使用闪存卡部署了部分TiKV,提效明显,且可以混合部署,可能反倒节约了成本

情况:版本

问题:低版本性能相比高版本差一些

处理:尽量升级至高版本

情况:TiDB Server节点数量

问题:TiDB Server节点数量少,集群QPS高,会导致SQL执行时间变长

处理:扩容TiDB Server节点

58 同城 TiDB 4.0 报告相关推荐

  1. 58同城和赶集网欢迎页发微-借势营销

    2015年04月17日 15:36,这一次头条属于他们-58同城和赶集网,详情点击:58同城同意收购赶集网股权 获43.2%股份 看了这个新闻,瞬间爆炸,十年的刀兵相见,如今终于耳鬓厮磨.于是下载了5 ...

  2. StarRocks 企业行|走进 58 同城,探索极速统一 3.0 时代的企业实践

    新的一年,新的征程. 随着 StarRocks 项目的演进,StarRocks 也迈入了极速统一 3.0 的时代. 极速 OLAP + 极速数据湖分析将带给企业什么价值?StarRocks 的用户又是 ...

  3. 58同城、安居客发布《2022春节返城租房调查报告》:超三成租客月薪过万

    随着城市复工复产,以及春节后跳槽热.高校生实习以及大量务工人员返城的影响,新的一波租房高峰也如期到来.近日,58同城.安居客重磅发布了<2022春节返城租房调查报告>,报告显示,一线城市租 ...

  4. 2020生活性服务业就业指数报告-58同城-2021

    来源 | 58同城 生活性服务业是指满足居民最终消费需求的服务活动.2019年,国家统计局印发<生活性服务业统计分类(2019)>的通知,将生活性服务业分为十二大领域:居民和家庭服务,健康 ...

  5. 【实践】58同城本地服务推荐系统演进

    猜你喜欢 0.图模型在信息流推荐系统中的原理和实践1.如何搭建一套个性化推荐系统?2.从零开始搭建创业公司后台技术栈3.全民K歌推荐系统算法.架构及后台实现4.微博推荐算法实践与机器学习平台演进5.腾 ...

  6. 58同城私有化:错过移动红利,吃流量老本,如何挽回崩塌的形象?

    从分类信息之王到87亿美元"卖身",时代抛弃58同城的时候,连招呼都不打一声. 6月15日,58同城发布公告,称与Quantum Bloom Group Ltd.签订合并协议.根据 ...

  7. 58同城再曝上市传闻:筹资至少1亿美元

    合肥技术联盟群联最新资讯20130801 58同城再曝上市传闻:筹资至少1亿美元 匿名消息人士称,58同城正在与瑞士信贷和摩根士丹利展开合作,筹备IPO交易. 原文链接:http://hfta.sin ...

  8. 58同城首页腰部动态化技术选型(布局动态化)

    1. 行业情况 1.1 基本概念介绍 1.1.1 Web混合 Web 前端和客户端的混合开发.使用 WebView 进行页面渲染.逻辑执行:依赖客户端的能力需要通过 JSBridge(通信桥) 的方式 ...

  9. 分享篇 - 58同城基于Android APP Bundle开发的全新编译模式(编译速度提升70%)

    目录 1. Wafers 项目背景 2. 效果展示 3. 实现方案 4. 改造期间遇到的问题 5. 如何接入使用 6. 对比 Instant Run 和 Apply Changes 7. 总结 1. ...

最新文章

  1. (C++)1026 程序运行时间
  2. 题解 【USACO 4.2.1】草地排水
  3. 【商业落地篇】Gartner第四范式全球首发AutoML系列白皮书(限时免费下载)
  4. SAP CRM WebClient UI BSP customized theme storage table
  5. C# 8: 默认接口方法
  6. 第4章 第三节 内核同步
  7. 神龙架构没那么难理解—图解世界领先的阿里云神龙架构(二)神龙出世
  8. 小程序采用mvvm设计模式_滴滴重磅开源跨平台统一 MVVM 框架 Chameleon
  9. 好大夫王航:长尾开发者应尽快接入百度轻应用
  10. php生成svg图片不显示,css svg不显示不出来怎么办
  11. ActionScript3.0中获取变量类型的方法
  12. Perhaps you should add the directory containing libpcre.pc to the PKG_CONFIG_PATH
  13. android+pdf+软件,Android最强PDF阅读器 十款软件大PK
  14. android小游戏代码
  15. html怎么给div加半透明背景色,CSS_div背景半透明 覆盖整个可视区域的遮罩层效果,html代码很简单 div class= - phpStudy...
  16. 非常非常地重试重试组件,使用杠铃的
  17. VSCode远程连接服务器报错:Could not establish connection to “xxx”,Faild to write install script to path!【已解决】
  18. Matlab(将2维图片显示成3维图形)
  19. 关于并发量的简单计算公式
  20. 关于对接海康威视综合安防平台并使用SDK下载过车视频

热门文章

  1. python资源管理器安装_python将资源管理器文件拖放到tkinter entry widg
  2. 基于pytorch的文本情感识别(LSTM,CNN)
  3. 基于Java springMVC+MySQL的大学校园BBS论坛网站设计与实现
  4. 机器人控制的基本方法
  5. 为什么实体店纷纷倒闭?是被马云打败的?还是被租金压垮的?
  6. 广东省民宿行业协会将主办乡村民宿产业大会
  7. MyZone项目练习
  8. 【Android -- 开源库】SmartRefreshLayout 的基本使用
  9. MyBatis 一二级的缓存机制详解
  10. joomla异常处理之--文章编辑时单元下拉框无法显示细目