TiDB稳定性的一些问题

Easter79
• 阅读 570

最近听同事说TiDB,溜得飞起。我始终坚信,这个世界上没有什么银弹,任何事物有好的一面,肯定存在不好的一面。TiDB的优点就不说了,随便Google一把就有很多。今天我们就来说说TiDB不够理想的一面(我们得到的测试结果)。

在开始之前,这里介绍一下参与本次测试以及出谋划策的人员有:本人[流浪小行]、吴秀[测试主力人员]、孤岛旭日、迹_Jason[佳兴]。排名不分先后。本次测试工具也为官方推荐的工具。配置也为官方推荐配置[除硬盘没有使用SSD]

先来看看TiKV的稳定性测试。这里先给出测试结论:3台TiKV,断掉一台,可以正常使用,断掉2台,不能正常使用。重新恢复服务有严格的启动顺序要求。5台TiKV,断掉一台可以正常使用,断掉2台数据库不能正常使用。重新恢复服务没有严格的启动顺序要求。

三台TiKV,IP最后一位分别为[.100]、[.101]、.[102]。先把[.100]停止,可以正常运行,3040min之内,server report failures在3040min左右会有值,截图如下:

TiDB稳定性的一些问题

关于server report failures官方文档解释如下:

TiDB稳定性的一些问题

紧接着再把[.101]机器停止,数据已经不能正常访问,错误如下图:

TiDB稳定性的一些问题

server report failures走势图截图如下图:

TiDB稳定性的一些问题

把先断开的那台[.100]重启,数据库仍然不能用,且100在半小时内的IO持续为50%;

TiDB稳定性的一些问题 TiDB稳定性的一些问题

把后断开的那台(101)启动,数据库可以正常访问,半小时内三台TiKV的IO都不低,100那台的耗用的网络持续半小时都为500Mbps

TiDB稳定性的一些问题

接下来。先停止[.101],后停[.100]。停止两台同样不能访问,停止一台的时候,与上面结果相同,同样报出了server report failures。把后断开[.100]服务启动,[.100]服务器的IO极速上升,数据库能正常访问。最后再启动[.101],一切正常。那如果TiKV增加到5台会是一个什么样的结果呢?下面就来看看测试的结果。

5个TiKV节点,1min内停掉2个节点,能进入到数据库中,但是并不能查询数据。截图如下:
TiDB稳定性的一些问题

半个小时内先后停掉2个节点数据库还是不能查询数据。

停掉第一个节点region变动如下图所示:

TiDB稳定性的一些问题

停掉第二个节点region变动如下图所示:

TiDB稳定性的一些问题

重启任意一个节点,数据库恢复正常。到这里TiKV的说明告一个段落。下面我们来看看PD Server稳定性如何。一样还是先上结论。

PD Server为两个节点时,任意一个节点有问题,数据库都不能正常使用。PD Server有三个节点时,PD Server的leader异常,查询会卡顿几秒,然后重新选举新的leader.PD Server有三个节点时,PD server的普通的member异常,测试数据库使用无明显异常;

PD Server为三个节点,杀掉PD Server的leader的进程,会卡顿几秒,报PD server timeoutPD server timeout错误,并且会立即推荐新的为member为leader。数据库操作报错截图如下如:

TiDB稳定性的一些问题 PD Server日志截图如:TiDB稳定性的一些问题

PD Server为三个节点,杀掉任意一台PD Server的进程,数据库有半小时后仍然不能使用,报 PD server timeout错误,且获取PD Server的member列表会报500错误。

TiDB稳定性的一些问题 数据库操作报错截图如下:TiDB稳定性的一些问题

在TiDB稳定性方面,发现了这样一些问题。也许是我们的测试方法出现了问题,有疑问大家一起探讨。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k