日志分类:MySQL

Shadowserver Foundation在5月31日发布了一份全网的MySQL扫描报告,共发现了暴露在公网的360万个MySQL实例。因为这份报告基数够大,而且信息也非常完整,从数据库专业的角度来看,里面是有很多非常有意思,且可以量化的数据和结论的。之前网上的一些分析都是基于安全角度来分析,这里我们一起再看看这份报告里面隐含的一些数据库信息吧。

另外,这里的“暴露在公网”,是指其端口在公网可以被访问且响应握手信息,并不是可以被登录,并没有什么安全隐患。原报告的文章链接可以在文章结尾处查看。

数据说明

该数据由Shadowserver的SCANNING PROJECT收集,总计扫描到537.8万个打开的3306端口,其中IPv4协议的395.7万个,IPv6协议142.1万个。这些端口中反馈了握手信息的共360万个,其中IPv4协议的228万个,IPv6协议134.4万。

返回握手信息的360万实例,因为握手信息包含了版本等信息,加上Shadowserver的地域等信息,就构成了一份较为完整的MySQL实例版本和实例分布数据。

Shadowserver并没有公布完整的数据详细信息,但依旧公布了多个维度的数据供分析。

全球共有800万MySQL实例在运行?

根据一些公开数据和部分经验数据,这里对全球MySQL运行实例个数做一个预测。在这份报告中,共探测到约538万开放的3306端口,其中约360万返回了握手信息。那么,全球一共有多少MySQL在运行呢? 这里基于以下信息做一个猜测:

  • 根据帕累托法则,即2/8原则,约仅有20%的因素影响80%的结果
  • 诸如Google、Amazon、微软、阿里巴巴、腾讯、字节跳动等大型企业保有大量实例,且不可以被扫描
  • 还会有大量实例运行在AWS、Azure、阿里云、GCP等云环境的VPC之中,如果没有开启公网IP,通常也无法被扫描到,这部分根据一些经验数据,预计为200万个
  • 根据IDC数据,全球服务器2021年出货量为1350万台

那么,扫描到538万再加上200万,则有约738万个"闲散"实例。根据2/8原则,诸如Google、Amazon、阿里巴巴等这些大型企业(非云部分)中依旧可能保有着20%的实例(738万为80%部分),也就是约为184.5万个实例。那么预计:全球整体MySQL实例数量可能在922万这样的数量级。另外,我们再从全球服务器出货量角度做一个验证。根据IDC数据,2021年全球服务器出货量约为1350万台,这里假设(该假设基于一些历史的经验)10台服务器对应一个数据库实例,那么2021年服务器出货量就对应了135万个实例,按照服务器平均5年折旧计算,总保有则约为675万个实例,这里与922万有一定的偏差。折中取这两个数据的平均值,所以这里预测:

全球MySQL实例数在800万左右

当然,这只是一个超大颗粒度的、不可验证的预测,如果有更好的预测模型或者数据支持,欢迎回复公众号讨论。

MariaDB在某些细分市场份额很大

从这份数据来看,MariaDB是拿下了非常大的市场的。从IPv4 top 10版本统计信息来看,MariaDB占比为14.3%;如果,单从IPv6的统计数据来看,MariaDB占比为86.2%,实例数量超110万。

这里在IPv6环境中,部署量最大的版本为:5.5.5-10.5.12-mariadb-cll-lve,这是一个cPanel在Lightweight Virtual Environment的发行版本,而对应的MariaDB 10.5.12版本为2021年8月发布。从这个点看到,MariaDB是获得了更多的开源社区的信任,作为其发行版的默认数据库版本。甚至在一些细分的场景中,MariaDB甚至可以说可能成为了主流。

但,另一方面,根据在中国的实际感受来看,MariaDB的市场现状并没有以上数据展示的那么乐观,原因如下:

  • 一是MySQL品牌依旧非常强大,虽然安装的MariaDB,但是实际使用的客户端依旧可能是mysql命令行,所以,用户依旧当做MySQL来使用。
  • 另外,目前,大型企业全面使用MariaDB支撑核心业务的公司还比较少,大部分依旧是使用MySQL,并基于MySQL去进行优化,而不是MariaDB。

当然,从这个数据角度来看,MariaDB的这个部署量依旧会给其带来很多优势:

  • 提升用户认知基础,虽然命令行依旧使用mysql,但是登录后依旧会看到MariaDB版本号信息和功能
  • 产品会在各种环境中被使用,对其整体的稳定性会有较大的保障
  • 相比MySQL,MariaDB已经获得更多Linux发行版的信任,这可能是进一步获得扩大市场的最重要的机会点之一

49%的实例启用了TLS/SSL加密

从所有IPv4环境的实例数据来看,有49%启用了TLS/SSL加密。因为MySQL 5.7之后的版本,都已经默认开启了传输加密,这与前面的MySQL 5.7占比数据是基本吻合的,大部分用户在使用5.7或8.0的时候,都会使用其默认自带的加密能力。所以,你的实例开启了传输加密吗?延伸阅读:

[......]

Read more

一直以来实现数据库的零数据丢失都是非常有挑战,尤其是跨可用区的场景下。很多核心系统为了实现这一点都投入了大量的智慧和金钱。Amazon RDS在文档都明确的写到,数据库在多AZ之间的数据是保持同步的(注:同步是指数据写入两边要同时写成功,即使一边不可用,已经提交的事务在另一边一定是成功的)。一直以来,我也很好奇Amazon RDS在哪个层面实现的同步复制。

这个问题原本也是没有太大疑问的,可以推测应该是通过EBS层面的块复制来下。依据有两方面,有一些公开的Amazon RDS一些架构图中可以看到有EBS复制的箭头说明。另外,还有一点,只有通过EBS的复制实现跨可用区数据一致性,才可能在RDS支持的多种数据库,如MySQL、SQL Server、Oracle等,上保持架构上一致。否则,不同数据库类型的高可用和复制架构可能相差很大。

但是,之前很长时间我还是有一个疑问,Amazon RDS复制到底是在数据库逻辑层实现的还是在EBS物理层实现的。

既然有上面的猜测,那为什么产生了这个疑问呢?是因为,在Aurora很多的对外介绍材料(包括论文、架构介绍的slide)中,会放一个MySQL架构来突出Aurora的架构优势。这个图一直让我误以为Amazon RDS使用了数据库的binlog的复制。在了解Aurora的时候大家经常会看到如下架构图作为反面案例(参考):[......]

Read more

体验MariaDB 10.3中的Oracle语法支持

2018-03-18 15:11  |  分类:MySQL,ORACLE

MariaDB 10.3发布已经有一段时间了,最近刚刚RC。里面提到了SQL_MODE新增了ORACLE选项,可以支持部分的PL/SQL语法,算是一个比较“新鲜”的更新,所以打算安装体验一下。

体验一下SQL_MODE="ORACLE"

简单体验一下,我们在Google上找到Oracle 9i文档中PL/SQL示例Sample 1. FOR Loop

Oracle中的示例文档中代码:

-- available online in file 'sample1' DECLARE x NUMBER := 100; BEGIN FOR i IN 1..10 LOOP IF MOD(i,2) = 0 THEN -- i is even INSERT INTO temp VALUES (i, x, 'i is even'); ELSE INSERT INTO temp VALUES (i, x, 'i is odd'); END IF; x := x + 100; END LOOP; COMMIT; END;

[......]

Read more

M|18 关于MariaDB 2018年的产品策略

2018-03-12 22:31  |  分类:MySQL,云计算

上周在纽约MariaDB年度用户大会(MariaDB User Conference,也简称M|18)上,CEO Michael Howard对MariaDB未来的产品策略做一个较为详细的阐述。MariaDB应该是除了官放MySQL之外最重要的MySQL分支。现在MariaDB在做版本10,这次大会上也发布了MariaDB 10.3.5(RC版)。近期官方MySQL也在快速的推进8.0版本(已经发布了RC版)的研发和发布。

Michael Howard分享的内容可以参考:MariaDB CEO takes aim at Oracle and launches new Labs。下面是我整理的一些关键点,或者说我关注的点吧。[......]

Read more

关于MaxScale2.1的BSL协议

2018-01-18 21:46  |  分类:MySQL

MaxScale是一个非常赞的MySQL Proxy产品,相比MySQL Route或者ProxySQL来看,也是非常有竞争力的。但是MaxScale有些特别,虽然是开放源代码的,但并不是一个“Open Source”的项目,他使用了特有的授权协议:BSL协议(全称:Business Source License)。那什么是BSL协议? 这里做个简单的说明,感兴趣的可以继续阅读文章后面的链接做延伸阅读。

BSL全称是Business Source License,最新版本是1.1(完整内容)。这里简单概括一下协议的主要内容:

1. BSL协议不是一个“Open Source”的协议,虽然你可以拿到源代码,使用这个软件,但是会受到限制的。比如MaxScale,在生产环境,如果后端超过3个实例,就必须购买商业授权。

2. BSL协议虽然不是一个开源协议,但是,使用BSL协议的软件在发布的最多4年后(也可以是更短的时间,可以在协议中定义),必须遵循GPLv2(或之后的GPL版本)协议分发。比如MaxScale2.1版本将在2019-07-01之后遵循GPL协议。

3. 对于非生产环境,BSL协议的软件可以不受限制的使用。

4. 所以,BSL协议虽然不是一个开源协议,但是使用BSL协议的软件,最终会变成开源软件。

5. BSL协议是MariaDB公司新定义的协议。需要注意,MariaDB依旧是GPL的,因为MySQL是GPL的,没人能够改变这个。

6. MariaDB公司遵循BSL的软件有:MaxScale、MariaDB ColumnStore Backup Restore Tool、MariaDB ColumnStore MaxScale CDC Data Adapter、MariaDB ColumnStore Kafka Data Adapter。

7. BSL协议应该是Monty等,经历了MySQL的被收购之后,关于开源软件和商业公司对抗的一个新的探索。可以看到BSL是介于开源、闭源之间的。[......]

Read more

Amazon RDS价格一瞥

2015-03-19 23:46  |  分类:MySQL,PostgreSQL,技术细节

本文尝试通过一些直观的数据和表格,来看看Amazon某个规格的RDS实例到底是什么价格以及如何计费。

亚马逊RDS计费分为两个主要的部分,一个是“实例费用”(CPU和内存),另一个是“存储费用”(磁盘容量和IOPS)。这两类资源的费用,又细分为单可用区和多可用区,另外,还可以选择“按小时计费”、又或者是“包年计费”的方式购买,这些对价格都有很大影响。本文分多个部分细致介绍了亚马逊如何计算一个RDS实例的价格。

“实例费用”

“基本规格”

基本规格根据CPU和内存使用来划分,Amazon RDS有如下基本规格:

Snip20150319_9[......]

Read more

Pages: 1 2 3 4 5 6 7 8 ... 14 15 16 Next