这里还有一个极端例子
假设是3副本,如果tikv同时2个节点不可用,刚好系统的元数据也在这两个tikv节点上,此时只剩下一个副本了,这个数据不可用,即集群元数据不可用,此时集群整体对外不可用,玩完。。。
所以机器越多,同时坏节点的概率也越高,风险也越大。不过,要它发生也是个小概率事件了,只是小概率事件一旦发生就是大故障
如果资源足够,意味着成本不是问题,按照我们的经验,还是尽量分开部署。
0.首先,具有相同业务特性、能合并在一个集群的业务,尽量放在同一个集群,毕竟可以节省机器成本、人力维护成本;纯AP、纯TP、HTAP的不同业务, 可能要尽量分开部署。
尽量分开部署的原因,主要考虑到:
1.物理隔离,任何问题、故障知会局限在单个集群,不会有扩大风险
2.运维是会相对繁琐,但是风险是隔离的,长远收益会更大
3.不同集群适配不同的业务需求,AP的、TP的、HTAP的,完全可以根据需要定制化,集群参数调整、升级等操作可以按需来做;不会出现因为一个业务的需要重启集群,而影响全部业务,风险太高
还有其他的一…
黑总厉害,才发现大佬你是 PCTA V6 0001 号证书持有者
如果是想继续使用这个版本的,你可以找一下 pd leader节点的运行日志,里面应该会有一些提示性信息
如果你不确定,可以发日志我们帮你一起看看
4.0.8版本已经比较老旧了,建议使用相对比较新的、又比较稳定的 6.1.5版本试试看。
我们生产环境用这个版本的,端口也没用默认的,都没问题
这里有几个问题点:
1.数据被格式化的那个TiKV节点,在上面的leader如果当时有被访问到,是会有影响了,由于请求不到数据会失败。如果来访问tidb集群的请求有重试机制,那么失败后重试一般就可以恢复正常。
如果是请求在别的正常的TiKV节点,其请求是正常的,不受影响。
2.集群默认3副本,所以只有1个TiKV节点被格式化时,还剩下2个副本,数据是不会丢失的,在比较短的时间内另外两个副本可以正常选出leader,可以正常对外服务。
所以,集群对外整体是正常访问的,集群数据不会丢失,只是在那个节点挂掉的瞬间,部分访问会有抖动。TiDB的自愈能力还是很强的。
大佬你后面修复数据了吗?这边大概是怎么处理的,学习了解下
一般还需要自己检查它给的内容,不过它写出来的东西有些地方还是有参考价值的,尤其是对一些问题没有头绪的时候
听说已经有类似的功能了,在内部开发中,估计是半年后 GA
对,是这个思路,只要不是那种非常重度的超大数据分析,通过良好的设计,通常都可以在一个集群实现混合流量的处理,即 HTAP
可以不同集群,使用ticdc部署主从集群,上游集群是 TP 集群,下游集群是 AP集群,好处是完全隔离互不影响,缺点是成本高。
此外,还可以在同一个集群实现HTAP:
存储层:tiflash可以承载比较大的数据分析需求,如果是基于部分行的轻量OLAP业务,也可以在tikv实现;总之,存储层可以通过tikv和tiflash搭配使用,隔离TP和AP压力。
SQL引擎层:tidb也可以做区分,可以只分配部分tidb-server 给AP用,它只访问tiflash;别的tidb-server 给 TP 流量用,专门负责处理线上 TP 业务
为了保证生产的tidb稳定运行,可以有下面的做法:
首先要根据业务访问量、数据量提前设置好参数、准备合适的部署方案(机器、内存、SSD等资源准备)
2.业务上线前设计合理的表、索引,注意区分隔离AP和TP流量
3.业务开发,定期培训,要求严格遵循开发者手册内容(
专栏 - 加载中 | TiDB 社区
4.如果有条件,事前,增加SQL前置审核平台来规范化此类问题;事后,定期分析集群慢查询、性能巡检,定位对应的业务SQL,优化之或优化业务
5.完善监控
保障数据库稳定运行是一个整体、系统化的事情,还有很多内容可以在实践中不断总结
不是这个意思,官方没有硬性限制,也只是建议值;只是说我们在部署的时候,注意按照最佳实践来设置,通常可以避免很多问题
所以良好的实践是要求集群只允许有奇数个PD节点,不让有偶数个的情况,网络隔离为2个小集群后有且仅有一个是超过半数的,如果隔离为3个及以上小集群因为pd不超过半数就停止对外服务了
如果还在使用 v3.0 版本的,真的建议你这边升级到6.1以后的版本,新的版本在稳定性、性能、新特性等各个方面都有质的提升。而且官方只维护最近的几个版本,3.x 版本早就不再维护了,从任何一方面来说你都应该考虑升级,升级后可以直接看6.x的视频和文档
一般不涉及底层数据写入和重新组织的配置参数,tidb目前都支持在线调整配置了的。
对于需要重启集群的配置,说明它确实需要重启,可能需要重新修改、组织数据,会影响后续的写、数据存取操作