独家:29 万中国 MySQL 实例的数据

在5月31日,Shadowserver Foundation发布了一份全网的360万MySQL实例的扫描报告(参考)。出于好奇,非常想了解这份数据里面中国地区的详情,在与Shadowserver官方几次沟通之后,也获得一份独家的中国区域详细数据,这里对这份数据的分析结果,分享如下。

 

这份数据中,中国地区的ipv4实例总计296291个,ipv6实例303个。ipv4占比达99.9%,如下的分析均基于ipv4版本。

01

 
 
中国MySQL版本分布
 

先直接看数据:

可以看到:

  • 相比全球数据(参考),MySQL 8.0占比要更高,达21%,但是MySQL 5.7依旧是生产环境主流。根据Oracle Lifetime Support Policy的规划(参考),MySQL 5.7版本将在明年的10月停止对其的扩展支持,也就不再更新版本。另外,个人猜测,同时,MySQL官方还可能会推出新的大版本(可能是9.0),所以,是时候考虑将8.0作为生产环境默认版本了。

  • 5.6版本应该是在MySQL最“如日中天”的时候推出的,在当时,MySQL的稳定性、性能、功能相比之前版本都有很大增强,可以看到该版本目前依旧有非常大的使用量。占比高达20%。另外,MySQL 5.6版本的Extended Support结束时间为2021年2月,其对应的最后一个小版本为2021年1月20日发布的5.6.51。

  • 关于Premier/Extended/Sustaining Support(参考):Premier Support可以认为是当前官方推荐的数据库版本,官方会不断提供新功能点的完善以及Bug和安全问题的修复。Extended 则表示该软件将不再那么频繁更新,而更关注与Bug和安全相关的问题。Sustaining阶段则不再发布新的版本,Oracle官方依旧会提供服务支持、文档知识库服务等。

02

 
 
中国各式各样的MySQL版本
 

这也是这份数据最有意思的部分。除了最常见的MySQL和MariaDB版本之外,在这份29万实例的数据中,也注意到了还有很多国内数据库或相关厂商的编译版本。具体的,包括了:

  • 5.7.14-AliSQL-X-Cluster:阿里云深度定制的MySQL开源分支(参考)

  • 5.7.18-txsql-log:应该是“腾讯云数据库团队维护的 MySQL 内核分支” (参考)
  • ucloudrel:猜测是ucloud编译的版本
  • 5.6.29-TDDL-5.1.28-1586108:这应该是PolarDB-X(之前的DRDS)的版本号
  • 5.1.35-analyticdb:为阿里云AnalyticDB MySQL版本的实例,此类实例暴露在公网还是有一些意外,而且还有一定的数量,可能需要关注一下风险
  • 5.7.33-mycat-2.0:MyCat是开源的MySQL分库分表的中间层
  • 5.7.25-TiDB-v5.2.3:TiDB数据库, PingCAP 公司自主设计、研发的开源分布式关系型数据库
  • 5.7.18-cynos-log:应该是TDSQL-C的前身cynosdb,是腾讯云自研的新一代云原生关系型数据库
  • 5.6.20-baidu-20150209-log:猜测应该是百度云的RDS数据库
  • 5.1.61-Alibaba-rds-201404-log:阿里云RDS数据库,看版本号应该是非常早期的版本(2014年)
  • 5.1.35-rds-kepler-sql:未知
  • 5.5.38-tokudb-7.1.7:是一个高性能面向写优化的MySQL引擎版本
  • 8.0.18-dms-proxy-2022:不太确定这是什么分支或者软件
  • 5.6.4-Sharding-Proxy 4.1.0:是ShardingSphere的透明化的数据库代理端
  • 5.7.22 SphereEx DB Plus Engine 1:SphereEx提供的,核心基于 Apache ShardingSphere 做了商业增强,包括安全、管控在内的企业级软件服务的数据库扩展
以上顺序也基本是按照实例的数量排列的。可以看到国内MySQL或者基于MySQL生态的数据库非常多,部分版本使用量还比较大,且因为MySQL的GPL协议特性,这其中很多的版本都是开源的,这也是MySQL生态繁荣的一个很重要的原因。另一个侧面,也看到,中国地区为MySQL生态的贡献是巨大的。

03

 
 
是时候规划5.7到8.0的升级了
 
  • 8.0的发布已经超过四年,生产环境运行的实例数量也非常大,其整体的稳定性已经经过大量的验证。在新的项目中,生产环境的默认版本建议直接使用MySQL 8.0

  • 8.0版本提供的Hash Join、JSON能力增强、快速DDL等特性增强了MySQL易用性
  • 8.0所提供的不可见索引、不可见列、系统表使用InnoDB引擎等,也让其在生产实践中,稳定性得到了进一步增强;其新增的角色管理、复制能力、安全策略增强,让其在企业级场景下有更好的表现
  • 此外:随着MySQL 5.7的停止更新,以及未来9.0版本的发布,老的5.7版本将逐步不再受到数据库厂商的关注,那么5.7版本的Bug、安全问题等也将不再发布补丁对其进行更新。
 

所以,是时候,提前做好版本升级规划了。

04

 
 
MariaDB在中国
 

MariaDB是MySQL除了官方外的第一大发行版,当然MariaDB是由MySQL创始人Monty创建,也有着不一样的意义,这里从数据的角度看看MariaDB数量在中国的占比情况。从这份数据(ipv4)中,MariaDB实例数量为12646个,占比为4%。相比之前全球top 10统计中(参考)MariaDB占比14%相比,这里的4%应该是更加真实的反MariaDB在中国的境遇的,而且根据实际的经验来看,在生产环境的比率应该是更低的,正如彭祥之前提到的:“China Has Great Potential for MariaDB Server”(参考)。具体的,这部分MariaDB的版本分布如下:

可以看到,MariaDB使用了与MySQL不一样的版本,其版本分布也更加零散。

05

 
 
安全风险提示
 

要注意,这些都是Shadowserver通过公开的端口扫描获得,意味着这些实例的端口是暴露于互联网上的,如果,你的数据库实例是一个内部实例,那么,应该尽量考虑关闭公网访问,以避免由于弱密码、漏洞等原因导致的数据暴露和泄露。例如,这里注意到公网暴露了这么多analyticdb,是有一些意外的,联想到近期上海的一些数据泄露事件,建议数据库使用者增强安全防范。

06

 
 
关于Shadowserver Foundation
 

这份数据是由Shadowserver Foundation( https://www.shadowserver.org/ )官方提供,是之前提到的360万暴露在公网的MySQL实例的中国实例数据。虽然,有其局限性,不过因为数据量较大,对于了解MySQL整体运行概况有非常好的参考。

 

“Shadowserver是全球领先的恶意活动调查、互联网安全报告的公益组织,Shadowserver维护着世界上最大的安全信息存储库之一,它存储了数以万亿计的历史恶意网络连接,同时Shadowserver每天扫描整个互联网超过50种协议暴露情况,用于查找可能用于攻击利用的配置错误或存在恶意行为的系统,Shadowserver拥有超过20个监测节点。”(参考)。

 

往期内容推荐:
 
 
 
 
 

全球共有多少MySQL实例在运行?这里有一份数据

 

一张图读懂阿里云数据库架构与选型

 

是时候开启数据库的加密传输了

 

实测阿里云RDS Serverless

 

云数据库技术行业动态@2022-07-08