Serverless数据库上手体验之云原生数据库 PolarDB MySQL 版

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 云原生数据库 PolarDB MySQL 版是阿里云自研产品,100%兼容 MySQL。PolarDB产品具有多主多写、多活容灾、HTAP 等特性,交易性能最高可达开源数据库的6倍,分析性能最高可达开源数据库的400倍,TCO 低于自建数据库50%。本文对该数据库的相关使用做了细致的体验说明。

前言

Serverless数据库是随着Serverless架构的发展而兴起的一种数据库服务模式,它将数据库的部署、运维、扩展等工作交给云服务商来完成,用户只需关注数据库的使用即可。


Serverless数据库具有以下优势:

  • 高弹性:Serverless数据库可以根据业务需求进行弹性伸缩,在业务高峰时自动扩容,在业务低谷时自动缩容,帮助用户降低成本。
  • 低成本:Serverless数据库采用按需付费的模式,用户只需为实际使用的资源付费,可以帮助用户节省数据库的成本。
  • 易用性:Serverless数据库的部署、运维等工作都由云服务商来完成,用户只需关注数据库的使用即可,降低了数据库的使用门槛。

随着Serverless架构的不断发展,Serverless数据库将会更加普及,其优势也将更加明显。未来,Serverless数据库将在以下几个方面继续发展:

  • 支持更多数据库类型:目前,Serverless数据库主要支持关系型数据库,未来将会支持NoSQL数据库、时序数据库等更多数据库类型。
  • 提供更细粒度的资源伸缩:目前,Serverless数据库的资源伸缩颗粒度相对较大,未来将会提供更细粒度的资源伸缩,满足不同业务场景的需求。
  • 支持更灵活的资源伸缩策略:目前,Serverless数据库的资源伸缩策略相对较为简单,未来将会支持更灵活的资源伸缩策略,满足不同业务需求。


正如阿里云的官方文档中上图,对于Serverless数据库与普通数据库在资源使用对比图描述的情况,我们可以看到Serverless数据库集群的强大生命力。


PolarDB MySQL版Serverless提供了CPU、内存、存储、网络资源的实时弹性能力,构建计算与存储分离架构下的PolarDB MySQL版产品新形态。Serverless不仅提供网络资源、命名空间、存储空间的垂直资源隔离能力,还提供计算存储资源按需计费的能力,具有资源用量低、简单易用、弹性灵活和价格低廉等优点,赋能用户面向业务峰谷时对计算、存储能力进行快速且独立的扩缩要求,做到快速响应业务变化的同时,合理优化使用成本,进一步助力企业降本增效。


PolarDB 数据库的成长史


Polar数据库是阿里云自研的云原生关系型数据库。


Polar数据库采用了云原生架构,具有高性能、高可用、高扩展性等特点。


Polar数据库的发展可以分为以下几个阶段:

  • 2020年:Polar数据库正式发布,支持MySQL协议,提供单机、双机高可用、多活容灾等部署模式。
  • 2021年:Polar数据库支持HTAP(混合事务分析处理)能力,可以满足OLTP和OLAP的双重需求。
  • 2022年:Polar数据库推出Serverless版本,可以根据业务需求进行弹性伸缩,帮助用户降低成本。


Polar数据库相对普通数据库的优势

Polar数据库相对于普通数据库具有以下优势:

  • 高性能:Polar数据库采用了云原生架构,具有高性能、高可用、高扩展性等特点。在测试中,Polar数据库的性能与传统数据库相比基本无差异。
  • 低成本:Polar数据库采用了按需付费的模式,可以根据业务需求进行资源伸缩,帮助用户降低成本。
  • 易用性:Polar数据库提供了简单易用的管理界面,可以帮助用户快速部署和管理数据库。


PolarDB MySQL版与普通的MySQL数据库有哪些异同

PolarDB MySQL版与普通的MySQL数据库在以下方面存在异同:

异同

  • 相同点
  • 兼容MySQL协议,可以使用MySQL的所有常用功能和命令。
  • 支持MySQL的生态系统,可以与MySQL的第三方工具和应用程序无缝集成。
  • 不同点
  • 架构:PolarDB MySQL版采用了云原生架构,具有高性能、高可用、高扩展性等特点。
  • 性能:PolarDB MySQL版的性能与传统数据库相比基本无差异。
  • 成本:PolarDB MySQL版采用了按需付费的模式,可以根据业务需求进行资源伸缩,帮助用户降低成本。

具体的异同

  • 架构
  • PolarDB MySQL版采用了云原生架构,将数据库的部署、运维、扩展等工作交给云服务商来完成,用户只需关注数据库的使用即可。
  • 传统的MySQL数据库由用户自行部署、运维,需要用户具备一定的数据库管理能力。
  • 性能
  • PolarDB MySQL版采用了云原生架构,可以充分利用云计算的资源优势,提升数据库的性能。
  • 传统的MySQL数据库的性能受限于用户的硬件资源,难以满足高并发、大数据量的业务需求。
  • 成本
  • PolarDB MySQL版采用了按需付费的模式,用户只需为实际使用的资源付费,可以帮助用户节省数据库的成本。
  • 传统的MySQL数据库采用了预付费的模式,用户需要提前购买固定数量的资源,即使实际使用量不足,也需要支付全额费用。


当我们明白了,这款产品的价值之后,我们对其进行详细的体验。


PolarDB MySQL版本


image.png


MySQL 5.7版本和MySQL 8版本是目前最常见的MySQL版本:

  • 兼容性:MySQL 5.7版本和MySQL 8版本与之前的MySQL版本兼容性良好,用户可以无缝迁移现有应用。
  • 稳定性:MySQL 5.7版本和MySQL 8版本经过了长期的测试和验证,具有良好的稳定性。
  • 功能:MySQL 5.7版本和MySQL 8版本提供了丰富的功能,满足用户的各种需求。

具体来说,MySQL 5.7版本是MySQL的长期支持版本,于2013年发布,将于2023年10月31日停止支持。

MySQL 8版本是MySQL的最新版本,于2018年发布,具有许多新特性和改进,例如:

  • InnoDB存储引擎的改进
  • JSON数据类型的支持
  • 流式查询的支持
  • 多主复制模式的支持

因此,MySQL 5.7版本和MySQL 8版本是目前最合适的MySQL版本。


以下是一些查询的资料显示的具体的数据,可以辅助说明MySQL 5.7版本和MySQL 8版本的普及程度:

  • 在Stack Overflow的2023年开发者调查中,MySQL是使用最广泛的数据库,其中MySQL 5.7版本占比37.7%,MySQL 8版本占比26.8%。
  • 根据W3Techs的数据,在2023年12月,使用MySQL的数据库网站中,MySQL 5.7版本占比45.5%,MySQL 8版本占比31.9%。


PolarDB 紧紧地围绕MySQL的最稳定版本,同时支持小版本的兼容,可以让用户无感的快速迁入使用。


在购买PolarDB 数据库时,体现了Serverless数据库的优势,可以按需,选择相应的配置,不至于资源浪费,有效的控制成本。


开通后,由独立的域名(https://polardb.console.aliyun.com/overview)进行资源访问,这块建议可以融合下,在阿里云资源看板,放置快捷入口。


image.png


对于其官方文档(https://help.aliyun.com/zh/polardb/polardb-for-mysql/?spm=a2c4g.11186623.0.0.58f67f32yp56t5),信息比较丰富,但是个人感觉,缺失了PolarDB 数据库与MySQL的对比。对于PolarDB 来讲,同时也有分布式版、PostgreSQL版等,又有什么样的异同,用户如何快速选择。可以增加更多的指引性信息。


Serverless数据库 PolarDB

image.png

点击集群ID实例,进行集群详情。当前集群详情,采用了一主一从两个数据库节点,资源伸缩广度上,PolarDB支持自动纵向扩展(0~32核)和横向扩展(0~8个节点),支持0~256核范围内伸缩;资源伸缩的颗粒度,PolarDB支持最小0.5PCU颗粒度的资源伸缩


image.png

PolarDB 以计算能力(PCU)定价,真正做到按量付费,帮助客户节省成本。成本下降最高可达80%。用户在使用时使用Serverless的弹性配置进行灵活选择资源大小。


tips:PCU(处理器核心单元)是一种用于衡量容器资源消耗的单位。PCU(PolarDB Capacity Unit):1个PCU的性能约等于1核2GB规格的PolarDB计算节点性能。


image.png


点击Serverless配置按钮,进行集群的Serverless参数配置


image.png


支持上文说的灵活的资源伸缩。


image.png


开启无活动暂停,可以配置检测时长,当在时长范围内,服务无访问需要,服务可将资源置为0,保证不浪费资源。


image.png


资源弹升速度非常优秀,迅速的完成的资源的伸缩


主节点Serverless弹性压测

点击Serverless配置按钮,调整配置为下图所示:

image.png

模拟客户端对PolarDB发起写请求,验证主节点的Serverless智能弹性能力。

通过Sysbench脚本访问集群地址进行压测,PolarDB主节点的规格能够根据负载进行自动伸缩与自动配置,达到Serverless的能力。


tips: Sysbench是一款开源的多线程性能测试工具,可以执行数据库只读、只写、读写混合等类型的性能测试。


连接控制台,执行性能测试工具命令,


初始化数据代码如下:


sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=pc-uf6qu5ij9wp2ruyfg.rwlb.rds.aliyuncs.com --mysql-port=3306--mysql-user=test_user --mysql-password=Password123 --mysql-db=sbtest --tables=128--table-size=1000000--report-interval=1--range_selects=1--db-ps-mode=disable --rand-type=uniform --threads=256--time=12000 prepare

执行读写混合的压测类型(oltp_read_write),并发数为32线程。创建128张表,然后分别插入1000000条记录


正式压力测试,代码如下:

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=pc-uf6qu5ij9wp2ruyfg.rwlb.rds.aliyuncs.com --mysql-port=3306--mysql-user=test_user --mysql-password=Password123 --mysql-db=sbtest --tables=128--table-size=1000000--report-interval=1--range_selects=1--db-ps-mode=disable --rand-type=uniform --threads=256--time=12000 run

image.png

随着时间的推移,在同样的并发数下,tps逐渐上升,延迟(lat)逐渐下降,最终到达一个稳定值,这说明PolarDB的处理能力借助Serverless弹性获得提升。


image.png

在控制台集群实例详情内点击性能监控,会看到我们压测的结果,说明了PolarDB的弹性伸缩的能力。

只读节点Serverless弹性压测

PolarDB for MySQL Serverless集群除了支持主节点自动弹性伸缩之外,还支持创建只读节点分摊主节点的读请求。当使用集群地址时,PolarDB for MySQL Serverless可以基于读负载的比例,智能地调整只读节点的个数和各自的规格,来达到最佳的Serverless能力。


PolarDB for MySQL Serverless集群主节点PCU扩容到弹升上限后,会自动创建新的只读节点并分摊部分主节点的读负载,最终使整个集群能够支撑更高的TPS请求量。


场景一:读写混合压测

image.png

调整参数配置,用于后续的测试。


继续使用压测工具,执行以下代码:


sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=pc-uf6qu5ij9wp2ruyfg.rwlb.rds.aliyuncs.com --mysql-port=3306--mysql-user=test_user --mysql-password=Password123 --mysql-db=sbtest --tables=128--table-size=1000000--report-interval=1--range_selects=1--db-ps-mode=disable --rand-type=uniform --threads=256--time=12000 run


效果很明显,和上一节测试类似,从Sysbench输出可以直接观察到,随着时间的推移,在同样的并发数下,tps逐渐上升,延迟(lat)逐渐下降,最终到达一个稳定值。这说明PolarDB的处理能力借助Serverless弹性获得提升。


image.png


同样,我们回到性能监控页面,能够看到

image.png


PolarDB收到读写混合请求后,主节点会首先迅速弹升到最大的32 PCU,之后监控逐步出现两个只读节点。当只读节点分摊主节点的读请求后,主节点CPU使用率逐步下降,规格最终稳定在22 PCU。


场景二:只读并发压测


(一)自动扩容能力测试

执行代码

sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=pc-uf6qu5ij9wp2ruyfg.rwlb.rds.aliyuncs.com --mysql-port=3306--mysql-user=test_user --mysql-password=Password123 --mysql-db=sbtest --tables=128--table-size=1000000--report-interval=1--range_selects=1--db-ps-mode=disable --rand-type=uniform --threads=256--time=12000 run

image.png

可以看到节点自动增加


image.png


性能监控处,也验证了资源的相关变化


(二)自动缩容能力测试


当执行脚本停止后,节点会自动缩容


全局数据强一致性

PolarDB for MySQL Serverless实例默认开启严格强一致性集群SCC(Strict Consistency Cluster)服务。SCC功能为PolarDB for MySQL Serverless提供了跨节点无损读扩展的能力。PolarTrans事务系统利用提交时间戳技术CTS和RDMA网络,在内核层面提供集群强一致性读SCC服务,在不损失性能的基础上,保证发往集群任意副本的读请求都可以获得强一致性的结果。


开源的mysqlsct工具用于检验数据库集群的强一致性读能力, 该工具通过跨session的写入+读取+结果对比的方式来测试数据库集群强一致性读的功能和性能。


重新进行serverless参数配置,调整为只读上限7下限1,如下图所示:



执行代码命令

/root/mysqlsct --host-rw=pc-uf6qu5ij9wp2ruyfg.rwlb.rds.aliyuncs.com --host-ro=pc-uf6qu5ij9wp2ruyfg.rwlb.rds.aliyuncs.com --port-rw=3306--port-ro=3306--user=test_user  --password=Password123 --iterations=100000--table-cnt=1--table-size=1000-f=0--concurrency=1--database=sct --sc-gap-us=0--report-interval=2--test-mode=sct

执行后,可以看到一致性检查全部通过,输出的信息如下截图:

image.png


回到控制台,改变参数配置,关闭SCC能力

image.png

等待修改完成

image.png

重新执行测试命令,此时将出现错误

image.png

PolarDB for MySQL Serverless借助高性能全局一致性SCC特性,提供了跨节点无损读扩展的能力。


总结

  • 资源弹升速度

PolarDB Serverless的资源弹升速度非常快,从0核到32核,探测窗口5秒,弹升时间约为1秒。

  • 资源伸缩广度

PolarDB Serverless支持自动纵向扩展(0~32核)和横向扩展(0~8个节点),支持0~256核范围内伸缩。

  • 资源伸缩的稳定性

PolarDB Serverless支持对业务无感的纵向扩缩容与横向扩展,在测试中,在进行资源扩展或缩减时,业务均没有受到影响。

  • 资源伸缩的颗粒度

PolarDB Serverless支持最小0.5PCU颗粒度的资源伸缩,可以满足不同业务场景下的资源需求。

  • 可支持自动启停

PolarDB Serverless可支持在没有访问需求时,计算资源可缩为0。当有访问需求时,10秒即可唤醒资源。

  • 全局数据的强一致性

PolarDB Serverless可支持所有只读节点的数据强一致性,并且性能不下降。

与同类型产品对比

PolarDB Serverless与同类型产品相比,在资源弹升速度、资源伸缩广度、资源伸缩的稳定性、资源伸缩的颗粒度、可支持自动启停等方面均具有优势。

  • 资源弹升速度

PolarDB Serverless的资源弹升速度最快,可以满足突发流量的需求。

  • 资源伸缩广度

PolarDB Serverless支持0~256核范围内的伸缩,可以满足不同业务场景下的资源需求。

  • 资源伸缩的稳定性

PolarDB Serverless支持对业务无感的资源伸缩,可以保障业务的连续性。

  • 资源伸缩的颗粒度

PolarDB Serverless支持最小0.5PCU颗粒度的资源伸缩,可以满足不同业务场景下的资源需求。

  • 可支持自动启停

PolarDB Serverless可支持在没有访问需求时,计算资源可缩为0,可以帮助用户降低成本。

反馈与建议

总体而言,PolarDB Serverless的Serverless能力非常优秀,在资源弹升速度、资源伸缩广度、资源伸缩的稳定性、资源伸缩的颗粒度、可支持自动启停等方面均具有优势。


对于PolarDB Serverless,我有以下反馈与建议:

  • 可以提供更多细粒度的资源伸缩颗粒度

目前,PolarDB Serverless支持的最小资源伸缩颗粒度为0.5PCU,可以满足大多数业务场景的需求。但是,对于一些对性能要求很高的业务场景,可能需要更细粒度的资源伸缩颗粒度。

  • 可以提供更灵活的资源伸缩策略

目前,PolarDB Serverless提供的资源伸缩策略相对比较简单,仅支持根据CPU使用率来进行伸缩。可以考虑提供更灵活的资源伸缩策略,例如根据业务流量、业务指标等来进行伸缩。


PolarDB Serverless的优势

PolarDB Serverless的优势主要体现在以下几个方面:

  • 高性能

PolarDB Serverless采用了云原生架构,具有高性能、高可用、高扩展性等特点。在测试中,PolarDB Serverless的性能与传统数据库相比基本无差异。

  • 低成本

PolarDB Serverless采用了按需付费的模式,可以根据业务需求进行资源伸缩,帮助用户降低成本。

  • 易用性

PolarDB Serverless提供了简单易用的管理界面,可以帮助用户快速部署和管理数据库。


PolarDB Serverless的应用场景

PolarDB Serverless适用于以下场景:

  • 对性能要求较高的业务场景,例如电商、金融、游戏等。
  • 对成本敏感的业务场景,例如中小企业、创业公司等。
  • 对弹性需求较高的业务场景,例如突发流量、季节性业务等。

PolarDB Serverless的未来发展

PolarDB Serverless是阿里云云原生数据库的最新产品,具有很大的发展潜力。未来,PolarDB Serverless有望在以下几个方面进行改进和完善:

  • 提供更细粒度的资源伸缩颗粒度,满足不同业务场景的需求。
  • 提供更灵活的资源伸缩策略,满足不同业务需求。
  • 支持更多数据库类型,满足不同用户的需求。
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
目录
相关文章
|
27天前
|
关系型数据库 Serverless 分布式数据库
扩缩容操作对PolarDB Serverless的性能有多大影响?
PolarDB Serverless 的扩缩容操作对性能会产生一定的影响,但通过合理的规划、监测和措施,可以将这种影响控制在较小的范围内。同时,随着技术的不断进步和优化,扩缩容操作对性能的影响也会逐渐减小,为用户提供更稳定、高效的数据库服务体验。
|
27天前
|
关系型数据库 Serverless 分布式数据库
PolarDB Serverless 的自动扩缩容机制
PolarDB Serverless 作为一种创新的数据库服务模式,其自动扩缩容功能是其重要的特性之一。这一功能为用户带来了诸多优势,同时也有着复杂而精密的运作机制。
|
3天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
13 3
|
3天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
18 3
|
3天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
22 2
|
16天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
115 15
|
10天前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
17天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
21天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
27天前
|
监控 关系型数据库 Serverless
扩缩容操作对 PolarDB Serverless 性能的影响
扩缩容操作对 PolarDB Serverless 性能的影响
23 3

热门文章

最新文章

相关产品

  • 函数计算