关于cloudflare故障的一些思考

关于cloudflare在2025 年 11 月 18 日发生的故障,其原因是:

他们的查询sql是:

因为是clickhouse,这是分布式的列存数据库。
default库里面放的是引擎为distributed的表,注,default库也是分布式的,在多个分片上。
r0数据库放的是引擎是replicatedmergetree本地表。注,r0库也是分布式的,在多个分片上。
system.columns中的system也是一个数据库,他是clickhouse系统自己的库。这个库里面有个columns表。

之前的用户权限,查询system.columns表出来的结果,是default库的http_requests_features表的name, type两个字段,
修改用户权限之后,查询system.columns表出来的结果,是【default库 + r0库】的 http_requests_features表的name, type两个字段。 —— 对bot management来说,feature翻倍了。并且加上其他信息,超过了200个feature的硬编码限制。

给我们的警示:
1. 要熟悉数据库的物理结构和逻辑结构,不能只局限在逻辑的查询上。一定要熟悉其文件结构和进程结构。
2. 要熟悉数据库的数据字典,比如system.columns表中,带database字段,这肯定不是无缘无故有这个字段的。查询的时候要带上这个字段。比如我们在给数据团队或者安全审计团队开账号的时候,也要当心这个问题。留意多个库,多个schema、同义词指向等等。

参考:
https://news.qq.com/rain/a/20251119A029CT00
https://tonybai.com/2025/11/19/cloudflare-18-november-2025-outage/

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据