请问一下如何才能保证生产的tidb稳定运行

如何避免生产的tidb业务异常
我现在的设计是这样的
通过流程去卡开发的不规范设计
其实很多开发都是小白,他们只管实现不会管
数据库会卡住的问题
如果你开头不做好工作
那等待结果就是你离职
我关心的是两个方面
1.数据量
2.读写量
3.强制要求有ttl默认是一天限制,可以开放到30天
ttl的意思不是说让你删除数据,而是让你把热数据冷数据分家。其实据调查在2008年大数据火爆之后慢慢的大数据也冷却下来了,各种nosql,sql的方案又回归到了new sql,不是说数据不重要,是指业务数据库中99%的数据是没人访问的
交易数据保留三月,之后不再提供查询。哪怕3月前的数据估计也只是在再现几天前的订单。其实作为技术最重要的是沟通能力。和业务达成某种方式的妥协,而不是说我为了表现出我的技术能力,我要去支撑几百p的tidb
为了保证生产的tidb稳定运行,可以有下面的做法:

  1. 首先要根据业务访问量、数据量提前设置好参数、准备合适的部署方案(机器、内存、SSD等资源准备)

2.业务上线前设计合理的表、索引,注意区分隔离AP和TP流量

3.业务开发,定期培训,要求严格遵循开发者手册内容(专栏 - 加载中 | TiDB 社区

4.如果有条件,事前,增加SQL前置审核平台来规范化此类问题;事后,定期分析集群慢查询、性能巡检,定位对应的业务SQL,优化之或优化业务

5.完善监控

保障数据库稳定运行是一个整体、系统化的事情,还有很多内容可以在实践中不断总结
其实本质来说数据库就是一个读写交易
也就是如果读入的数据量大了,把磁盘io占完了数据库就会卡

我会制定sql使用规范
规定哪些能做哪些不能做
比如varchar(255)不能超过255
如果是大文本 你去用s3
在表结构卡住开发后,开发写错误的sql也只能引起cpu流量高,而不会出现io问题
cpu高的问题比io高的问题好解决tidb天然是高可用的可伸缩的扩容就行
但io层面的扩容在云上的成本就会高很多,这个是我个人的理解

当你解决了io剩下的一切都好办了
给大家讲一个小故事
我当年有一位dba同事
他的个人能力,技术都非常好。为人处事也好对人友善。但背锅被开除了
因为他维护的库不懂得拒绝开发的需求,整库容量增长到了100t,oracle的库 2008年还是机械设备。读写只有80m 虽然有raid5 但也只有500m左右。库大了之后,业务就不可用了,虽然他是ace,精通各种优化方法。

1 个赞

:rofl:我这边物理机搞虚拟化,随便一点批量写入,IO就飙到100%。这种情况怎么破

其实数据库的ttl过期设计也非常好。我是强制要求开发使用ttl过期的 默认是1天 有些表强制要求1小时
数据库的数据量就小了

我已经回答你的问题了 限制io

限制下虚拟机iops?

:joy:1个小时才插入了1千万的数据,再限制IO,就支撑不了我的业务了。

:rofl:我描述的不清楚么?为什么是限制IO,而不是提升IO设置?

不限制的话这个虚拟机可能就把宿主机整个io占满了,影响其他的业务~

强制要求TTL是不是有点过了

我们感觉也有类似问题,云上写入 io 很容易突高,经常尖刺八九十,运维跟我说不到 100 问题不大,但感觉有的有索引的慢查询可能也是收到这个的影响
昨天再看《数据密集型系统设计》里面谈到 LSM-Tree 的设计数据写入带宽和后台数据压缩带宽时共用的,因此可能互相影响,不知道云上这个问题是不是更严重点

加油你是最棒的

加油你是最胖的
由于我这没有虚拟机,只要保证硬件不坏即可

为了保证生产的tidb稳定运行,可以有下面的做法:

  1. 首先要根据业务访问量、数据量提前设置好参数、准备合适的部署方案(机器、内存、SSD等资源准备)

2.业务上线前设计合理的表、索引,注意区分隔离AP和TP流量

3.业务开发,定期培训,要求严格遵循开发者手册内容(专栏 - 加载中 | TiDB 社区

4.如果有条件,事前,增加SQL前置审核平台来规范化此类问题;事后,定期分析集群慢查询、性能巡检,定位对应的业务SQL,优化之或优化业务

5.完善监控

保障数据库稳定运行是一个整体、系统化的事情,还有很多内容可以在实践中不断总结

要保证 TiDB 系统稳定运行,可以采取以下几个方面的措施:

硬件和网络要求:确保硬件能够满足 TiDB 的最低配置要求,并且网络带宽和延迟也需要能够满足业务需求。

数据库设计和优化:合理设计数据库结构和索引,避免全表扫描和大量数据写入导致的性能问题。此外,还需要定期对数据库进行优化和调整,确保其性能始终处于最佳状态。

高可用架构设计:通过使用 TiDB 高可用架构(如 TiDB + PD + TiKV),来确保系统的高可用性和容错性,避免单点故障的发生。

监控和告警机制:建立完善的监控和告警机制,实时监测 TiDB 系统的状态和性能指标,并及时发现和处理异常情况,以确保系统的稳定运行。

安全管理:加强 TiDB 系统的安全管理,包括访问控制、风险评估和漏洞修复等方面,避免安全漏洞被攻击和利用,保障系统的稳定和安全。

1、开发设计数据库要严格把关,表结构设计、字段长度、索引建立等
2、程序需要加cache,特别是读多写少的
3、定期查看服务slow sql,程序能优化的地方尽量优化
4、做好数据库监控告警
5、服务层面要做好各种治理,服务限流、服务熔断,防止大量请求穿透打到数据库层面
6、tidb服务高可用设计,保证数据库异常时,尽可能少的服务异常时间

停电可以让你的这些设想,立马无效 :upside_down_face:

补充一点:别忘了及时进行数据备份哦,并及时验证数据备份恢复后的数据可用性。

[quote=“Jellybean, post:14, topic:1003899, full:true”]
为了保证生产的tidb稳定运行,可以有下面的做法:

  1. 首先要根据业务访问量、数据量提前设置好参数、准备合适的部署方案(机器、内存、SSD等资源准备)

2.业务上线前设计合理的表、索引,注意区分隔离AP和TP流量

3.业务开发,定期培训,要求严格遵循开发者手册内容(专栏 - 加载中 | TiDB 社区

4.如果有条件,事前,增加SQL前置审核平台来规范化此类问题;事后,定期分析集群慢查询、性能巡检,定位对应的业务SQL,优化之或优化业务

5.完善监控

保障数据库稳定运行是一个整体、系统化的事情,还有很多内容可以在实践中不断总结
[/quote]好办法

其实tidb有写入放大问题

这是一直被同行攻击的一个点,如果做好了上面的工作,就不会引起问题