数据库|TiDB多副本损坏,别着急!有损恢复帮你化险为夷!
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
TiDB分布式数据库通过多副本机制保障数据的一致性和可用性。本文由神州数码云基地的后端开发工程师高文锋撰写,详细介绍了TiDB在面对多副本损坏或丢失时的处理方法,旨在确保数据库的可靠性和稳定性。
01前言
TiDB通过Multi-Raft协议同步数据副本,以保持强一致性并在副本损坏时保障数据可用。尽管单副本损坏对集群影响不大,多副本损坏时的快速恢复对DBA而言却是一大挑战。
02TiDB数据库的存储架构
TiDB的架构包括无状态的SQL层TiDB Server、元信息管理模块PD Server以及负责数据存储的TiKV Server。TiKV Server使用Region作为数据存储单位,并通过默认三副本机制实现高可用性和故障转移。TiFlash作为特殊存储节点,以列式格式存储数据,加速分析型场景。
03集群信息与故障模拟
文中列举了集群中的Store情况和测试表的Region分布,并演示了如何通过关闭系统服务的自动拉起功能来模拟TiKV故障。模拟结果显示,故障导致部分Region失去多数副本,从而无法访问对应的表。
04有损不安全恢复
在线下节点导致数据不可用且无法自动恢复的情况下,可使用Online Unsafe Recovery功能执行有损恢复。虽然恢复后表可读写,但可能会出现数据索引不一致。此时,可以通过重命名和重建索引来修复问题。
总结
在TiDB中,多副本规则确保了数据的高可用性。当Region的大多数副本下线时,会导致Region暂时不可用。在执行unsafe recovery后,指定节点会被设置为Tombstone状态,停止所有调度和split/merge操作,直至恢复完成。
本文最后以一段推广信息结束,提醒读者关注神州数码云基地的更多技术干货。
想要了解更多内容?