独家:29 万中国 MySQL 实例的数据
在5月31日,Shadowserver Foundation发布了一份全网的360万MySQL实例的扫描报告(参考)。出于好奇,非常想了解这份数据里面中国地区的详情,在与Shadowserver官方几次沟通之后,也获得一份独家的中国区域详细数据,这里对这份数据的分析结果,分享如下。
这份数据中,中国地区的ipv4实例总计296291个,ipv6实例303个。ipv4占比达99.9%,如下的分析均基于ipv4版本。
01
先直接看数据:

可以看到:
-
相比全球数据(参考),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和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 做了商业增强,包括安全、管控在内的企业级软件服务的数据库扩展
03
-
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是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( https://www.shadowserver.org/ )官方提供,是之前提到的360万暴露在公网的MySQL实例的中国实例数据。虽然,有其局限性,不过因为数据量较大,对于了解MySQL整体运行概况有非常好的参考。
“Shadowserver是全球领先的恶意活动调查、互联网安全报告的公益组织,Shadowserver维护着世界上最大的安全信息存储库之一,它存储了数以万亿计的历史恶意网络连接,同时Shadowserver每天扫描整个互联网超过50种协议暴露情况,用于查找可能用于攻击利用的配置错误或存在恶意行为的系统,Shadowserver拥有超过20个监测节点。”(参考)。