从 TiDB 学习分布式数据库测试
前言
最近在研究数据库正确性测试相关的内容,恰好看到TiDB数据库在这方面的工作,很受启发,故写此文章。
推荐下一些TiDB官方好文章:
- 《分布式系统测试那些事儿 – 理念》https://cn.pingcap.com/blog/distributed-system-test-1/
- 《分布式系统测试那些事儿 – 错误注入》https://cn.pingcap.com/blog/distributed-system-test-2/
- 《分布式系统测试那些事儿 – 信心的毁灭与重建》https://cn.pingcap.com/blog/distributed-system-test-3/
- 《TiDB 混沌工程实践:如何打造健壮的分布式系统?》https://cn.pingcap.com/blog/tidb-chaos-engineering/
- 《基于 Chaos Mesh 和 Argo 打造分布式测试平台》https://cn.pingcap.com/blog/building-a-distributed-test-platform-based-on-chaos-mesh-and-argo/
从一个BUG开始
理论上说,任何一款支持事务的数据库都应该支持ACID四个特性。实际上呢,可能因为未知的软件Bug、机器故障(比特反转)等,导致数据库在实际运行中未能完全满足,这就有可能对上层业务带来严重的影响。
比如Percona(MySQL源码的一个分支)修复了一个MySQL可能丢失数据的bug:https://docs.percona.com/percona-server/8.0/release-notes/8.0.39-30.html#bug-fixes
关于Bug的更详细解读见:https://www.modb.pro/db/1869263663966728192
对应的修复代码:https://github.com/percona/percona-server/pull/5385/files