PolarDB Lens低调发布:洞悉百TB级云原生数据库

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: PolarDB是阿里巴巴自主研发的下一代云原生关系型数据库,阿里云日志服务PolarDB Lens围绕其提供了一站式的数据库资产概览、日志采集管理、分析和场景应用落地支持,本文介绍了PolarDB和PolarDB Lens的基本特性,并通过性能实验使读者对PolarDB Lens的功能有一个直观的认知。

背景

PolarDB

关系数据库作为商业应用的核心,承载这无比重要的职责。不仅需要为上层服务提供高性能的事务服务,并且需要保证数据的原子性、一致性、隔离性和持久性。通常初创企业都会选择MySQL或者Postgres这样较为成熟的开源免费产品搭建生产集群,然而随着业务量的迅速增长,数据库的性能和容量往往很快成为业务发展的瓶颈。选择增加从库和分库分表的解决方式,固然可以一定成都缓解数据库性能和容量的问题,然而与之对应的是运维成本的急剧增加。聘请专业DBA和购买商业版数据库套件成本居高不下,有什么低成本的解决方案呢?

阿里云PolarDB就是这个云原生时代新的解决方案之一。

  • 高可靠。依托于阿里云领先RDMA高速网络,PolarDB采用了共享存储的架构设计,彻底消解了数据库主从同步延时问题,使得整个数据库集群在应对任何单点故障时,可以保证数据零丢失。
  • 大容量。基于阿里云先进的自研分布式共享存储技术,PolarDB不受限于单节点的规格,购买时无需关心容量,自动扩展,轻松应对上百TB级别的数据规模。
  • 高性能。PolarDB深度优化的数据库内核和存算分离的架构,计算能力最高可扩展至1000核以上集群版单库最多可扩展到16个节点,满足高并发场景对性能的要求。

选择PolarDB,不仅节省了数据库系统的总成本,更是获得了传统数据库解决方案无法匹敌的可靠性、容量和性能。

日志现状

再好的数据库产品也免不了需要进行日志审计、性能调优、错误监控以满足安全合规、交易提速、故障响应等需求,通常这些需求都可以通过分析数据库的日志得到满足。当前PolarDB提供了以下4类日志:

日志类型

日志说明

审计日志

审计日志记录了所有对数据库的操作和状态码,包括DDL、DML等,帮助您更好地获取SQL语句的具体信息,进行错误排查、安全审计、SQL性能优化等。

性能指标

性能指标记录了数据库引擎的关键性能指标,如读写行数、IO操作数、缓存使用率等,帮助您更好地监控数据库负载,指导调参扩容。

慢查询日志

慢查询日志记录了查询时长超过阈值SQL,包括发起人、耗时、获取锁等待时间等信息,帮助您洞察慢查询和潜在的数据库设计问题,进行SQL和索引调优。

错误日志

错误日志记录了数据库进程的关键事件,例如启动、崩溃、打开数据库文件、数据同步等,帮助您了解数据库实例的运行情况,协助处理数据库故障。

然而,PolarDB内置的日志查看能力对于满足上述需求仍然存在这诸多不足。

  1. 缺乏全局视图:PolarDB资产是分地展示的,缺乏跨地域的全局资产视图。同时PolarDB的日志查看功能是在单个实例下面,如果需要监控的实例比较多那日志监控的开启、查询会比较不便。
  2. 分析能力较弱:PolarDB控制台提供的日志查询能力比较简单,仅提供预定义几个维度的筛选和排序能力,无法自定义SQL查询,也不能基于自定义查询结果采取行动,如进行告警。
  3. 存储时间短:例如PolarDB的内置查询界面仅能查看最近1小时的性能指标与慢日志,超时效的日志数据无法查看,不利于运维问题追溯。

PolarDB Lens介绍

特性

PolarDB Lens是阿里云日志服务(SLS)团队联合PolarDB团队发布的一款PolarDB数据运营应用,其主要功能包括

  • 全局PolarDB实例资产视图:帮助用户一览全部集群资产1,方便快捷地配置数据库的审计日志、性能指标、慢日志以及错误日志的监控与分析。
  • 分析能力和场景应用:依托于日志服务(SLS)平台的基础能力,PolarDB Lens中用户可以轻松对日志进行自定义SQL查询、关联查询,同时内置了数据报表以满足客户在安全、性能、监控等场景下的业务需求2
  • 持久的日志存储:PolarDB Lens为接入的全部4种PolarDB数据库的日志提供可自定义的日志存储时长,最长可达3000天,并且结合了日志服务(SLS)平台最新发布的冷存储能力,极大地降低了客户数据长期存储的成本3
  1. 当前仅支持兼容MySQL类型的PolarDB集群实例。
  2. 当前仅有性能监控,更多场景应用建设中。
  3. PolarDB Lens内冷存UI集成预计21年12月底发布。

接入管理--PolarDB集群接入视图

PolarDB Lens的的集群接入页面采用了跨地域全局视图,所有地域的实例在一个页面内以列表形式呈现,如下图所示。

为了帮助客户便捷地筛选所需实例,管理界面的偏左侧展示了实例的名称、地域、标签、规格等关键属性,并提供了筛选排序功能。偏右侧则集成了审计日志、性能指标、慢查询日志和错误日志4种日志类型的采集管理、状态展示和查询功能。对于已经开通采集的实例日志,其对应状态会在浮层中展示,信息包括:目标存储库的project名称,logstore名称,地域,存储时长,并有跳转查询链接一键直达日志数据。如果已经开启的采集不能正常工作,那么页面上会提示“采集异常”,帮助客户发现问题。

注意:开启审计日志的同时会开启依赖的PolarDB SQL洞察服务,该服务为收费项目,收费标准可根据页面提示跳转查询。性能指标、慢查询日志和错误日志,无额外费用项目,仅收取基本的日志服务费用。

存储管理--存储目标库视图

PolardBB Lens的存储目标库页面展示了所有存储PolarDB日志数据的存储库,如下图所示。

视图中,以目标存储库为分组,展示了存储库的地域、保存时间、采集实例数和存储的日志类型。其中,调整数据保存时间是这个界面的关键功能。为了满足等保2.0等合规硬性要求,我们可能需要将审计日志的保留时长调整到180天以上,而为了控制成本,我们可能需要开启冷存或者将非核心日志的保留时长缩短,这些操作都可以在这里轻松完成。

场景应用--PolarDB性能监控

目前PolarDB已经开放了PolarDB性能监控这一场景应用,如下图所示。

PolarDB性能监控提取了PolarDB性能指标中最关键的一些指标,如CPU使用率、内存使用率、已使用数据量、活跃连接数、QPS、TPS、缓冲池读取命中率等,并将其可视化。筛选组件使得监控页面可以针对某个异常集群或者读/写实例进行单独的指标分析。

产品入口--日志服务-云产品Lens


性能数据探秘

指标介绍

PolarDB Lens提供了总共45个性能指标和秒级监控频率方便您掌握集群的运行状态,并提供了7个Label可供细分助您快速定位运维问题。

详细的指标信息如下:

类别

字段

含义

基本

mysql_cpu_ratio

CPU使用率

mysql_mem_ratio

内存使用率

操作统计

mysql_qps

每秒请求数。来源于show global status命令查询结果中的Questions指标

mysql_tps

每秒事务数。来源于show global status命令查询结果中的Com_commit和Com_rollback指标之和

mysql_mps

每秒数据操作数。来源于show global status命令查询结果中的Com_insert、Com_insert_select、Com_update 、Com_update_multi、Com_delete、Com_delete_multi、Com_replace、Com_replace_select指标之和

mysql_com_delete

每秒DELETE命令执行次数

mysql_com_delete_multi

每秒多表DELETE命令执行次数

mysql_com_insert

每秒INSERT命令执行次数

mysql_com_insert_select

每秒INSERT ... SELECT命令执行次数

mysql_com_replace

每秒REPLACE命令执行次数

mysql_com_replace_select

每秒REPLACE ... SELECT命令执行次数

mysql_com_select

每秒SELECT命令执行次数

mysql_com_update

每秒UPDATE命令执行次数

mysql_com_update_multi

每秒多表UPDATE命令执行次数

mysql_innodb_rows_deleted

每秒DELETE的行数

mysql_innodb_rows_inserted

每秒INSERT的行数

mysql_innodb_rows_read

每秒SELECT的行数

mysql_innodb_rows_updated

每秒UPDATE的行数

存储空间

mysql_data_size

数据空间的使用量

mysql_binlog_size

Binlog日志文件的大小

mysql_redolog_size

Redolog日志文件的大小

mysql_other_log_size

其他日志文件的大小

mysql_sys_dir_size

系统空间的使用量

mysql_tmp_dir_size

临时空间的使用量

引擎

mysql_innodb_buffer_read_hit

缓冲池的读命中率

mysql_innodb_buffer_use_ratio

缓冲池的利用率

mysql_innodb_buffer_dirty_ratio

缓冲池的脏块率

mysql_innodb_data_read

每秒从存储引擎读取的数据量

mysql_innodb_data_written

每秒往存储引擎写入的数据量

mysql_innodb_data_reads

每秒从存储引擎读取的次数

mysql_innodb_data_writes

每秒往存储引擎写入的次数

mysql_innodb_log_write_requests

每秒写日志的请求数量。来源于show global status命令查询结果中的Innodb_log_write_requests指标

mysql_innodb_os_log_fsyncs

每秒同步日志数据到磁盘的次数。来源于show global status命令查询结果中的Innodb_os_log_fsyncs指标

mysql_created_tmp_disk_tables

每秒创建的临时表数量。来源于show global status命令查询结果中的Created_tmp_disk_tables指标

mysql_slow_queries

每秒慢请求次数

存储IO

mysql_iops

每秒读写总次数

mysql_iops_r

每秒每秒读次数

mysql_iops_w

每秒每秒写次数

mysql_iops_throughput

每秒总I/O吞吐量

mysql_iops_throughput_r

每秒读I/O吞吐量

mysql_iops_throughput_w

每秒写I/O吞吐量

网络

mysql_total_session

每秒总连接数。来源于show processlist命令查询结果中的统计信息

mysql_active_session

每秒活跃连接数。来源于show processlist命令查询结果中的统计信息

mysql_kbytes_sent

每秒输出流量

mysql_kbytes_received

每秒输入流量

详细的Label信息如下:

字段

含义

cluster_id

PolarDB集群ID

node_id

PolarDB节点ID

type_role

节点类型(读写、只读)

owner_id

所有者主账号ID

polardb_type

PolarDB兼容性类型

db_version

PolarDB兼容性版本

polardb_category

PolarDB系列

性能实验

PolarDB的性能、可扩展性和性价比是否如宣传那样惊人呢?我们通过实验与单机MySQL的代表RDS云产品做个对比。

PolarDB实例:类型MySQL 8.0兼容,4核16G独享型,1写1读。

RDS实例(相当于MySQL单机):类型MySQL 8.0,4核16G独享型,本地SSD 500G。

我们使用Sysbench 0.5对数据进行一番测试,借此对数据库的性能有一个基本的了解。我们选用olta.lua的脚本对数据进行测试,该脚本提供了混合读写测试,读写比例14:4,能较为综合地反映出数据库的性能水平。

首先,我们使用脚本向数据库插入2千万条数据,这个数字对于单机的MySQL已经可以构成一定的挑战。

time ./sysbench --test='tests/db/oltp.lua'--oltp_tables_count=1--report-interval=10--oltp-table-size=20000000--mysql-user=*** --mysql-password=*** --mysql-table-engine=innodb --mysql-host=*** --mysql-port=*** --mysql-db=*** --max-time=300--max-requests=0--oltp_skip_trx=off --oltp_auto_inc=off --oltp_secondary=off --oltp_range_size=100--num-threads=1000--percentile=99--max-time=300 prepare

为了方便读者理解,我们附上表结构。

CREATETABLE `sbtest1` (  `id` int(10) unsigned NOTNULL,  `k` int(10) unsigned NOTNULLDEFAULT'0',  `c` char(120)NOTNULLDEFAULT'',  `pad` char(60)NOTNULLDEFAULT'',KEY `xid` (`id`),KEY `k_1` (`k`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

PolarDB耗时8m30.860s,RDS耗时6m57.367s,说明PolarDB相比于使用本地SSD的MySQL实例在写入上可能没有显著优势。

然后,我们开始执行读写测试5分钟。

time ./sysbench --test='tests/db/oltp.lua'--oltp_tables_count=1--report-interval=10--oltp-table-size=20000000--mysql-user=*** --mysql-password=*** --mysql-table-engine=innodb --mysql-host=*** --mysql-port=*** --mysql-db=*** --max-time=300--max-requests=0--oltp_skip_trx=off --oltp_auto_inc=off --oltp_secondary=off --oltp_range_size=100--num-threads=1000--percentile=99--max-time=300 run

此时通过PolarDB Lens的性能监控可以观测到压测过程中的资源消耗和数据库性能指标的变化情况。

此时,我们第一阶段的测试已经完成,汇总PolarDB和RDS性能监控的数据如下:

实例产品

PolarDB

RDS

99分位延时均值

1.43s

2.31s

QPS均值

28484

10223

TPS均值

1422

2075

CPU使用率

96.81%

92.03%

从结果上看,PolarDB在读多写少的场景相比与MySQL单机具有显著优势。这一点也非常好理解,因为PolarDB默认为1写1读,天然比单机多一个只读计算节点。由于部分SQL非常慢,导致了99分位的SQL延时较高,我们可以结合慢日志分析一下原因。

从图中可以看到一条典型的慢SQL,但这与其他SQL无显著区别,lock_time为0,并且我们已经通过建表语句确认了id字段索引已经建立。由于99分位延时过高,且通过PolarDB Lens的性能监控观察到CPU使用率已经达到96%以上,我们尝试扩展PolarDB的只读节点来提高查询性能,同时测试PolarDB的性能扩展弹性。

节点数量

1写1读

1写2读

1写3读

1写4读

1写5读

99分位延时均值

1.43s

0.95s

0.74s

0.67s

0.62s

QPS均值

28484

38157

48959

54818

62150

TPS均值

1422

1908

2443

2695

3054

CPU使用率

96.81%

95.83%

95.85%

94.74%

94.42%

第二阶段的测试结果如表所示,可以看到PolarDB的QPS性能是随着节点数的增加而线性增长的,当配备1写5读时,62150的QPS均值达到了单机MySQL的6倍,这证明了PolarDB确实具备良好的性能弹性扩展特性。而计算一下成本,假设我们的业务恰好是这样的query,并且需要6万QPS的性能,使用PolarDB的月租费用为:2000(初始1写1读)+存储1750(以500G计算)+440(只读节点)*4=5510/月,而使用RDS的月租费用为2500(主实例)+2254(读写实例)*4=11516/月(未计算读写分离代理费用)。由此可见在读多写少的场景下,使用PolarDB相比于传统数据库解决方案可大幅节省成本,同时还享受了存按量计费、数据强一致、简易运维的好处,确实可以称得上性价比惊人。

结语

PolarDB为企业提供了一种创新的高可靠高性能可扩展的数据库解决方案,然而数据库的世界从不简单,作为业务的存储核心围绕数据库展开的审计、性能、监控需求持续不断,PolarDB Lens为客户提供了一站式的数据库资产概览、日志采集管理、分析和场景应用落地的支持,是数据库安全审计、性能优化、监控响应等解决方案中的可靠伙伴。

最后,给耐心看完文章小伙伴留一个思考题,在本测试中,数据库的性能并不理想,是sysbench中的哪几个开关对测试结果产生了不利影响呢?欢迎细心的小伙伴在评论区留言交流。

参考文献

PolarDB Lens前端入口:https://sls.console.aliyun.com/lognext/app/lens/polardb

SLS各个云产品日志应用文档列表:https://help.aliyun.com/document_detail/151620.html

6倍性能差100TB容量,阿里云POLARDB如何实现?https://developer.aliyun.com/article/214367

智能冷热分层存储:https://help.aliyun.com/document_detail/308645.html

查看性能监控指标:https://help.aliyun.com/document_detail/68555.html

Sysbench使用指南:https://developer.aliyun.com/article/797665

  • 欢迎钉钉扫群加入阿里云-日志服务(SLS)技术交流, 获得第一手资料与支持

  • 更多SLS的系列直播与培训视频会同步到微信公众号、知乎与B站,敬请留意

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
15天前
|
关系型数据库 Serverless 分布式数据库
【公测】PolarDB PostgreSQL版Serverless功能免费使用​!
【公测】PolarDB PostgreSQL版Serverless功能免费使用​,公测于2024年3月28日开始,持续三个月,公测期间可以免费使用!
|
19天前
|
关系型数据库 分布式数据库 数据库
成都晨云信息技术完成阿里云PolarDB数据库产品生态集成认证
近日,成都晨云信息技术有限责任公司(以下简称晨云信息)与阿里云PolarDB PostgreSQL版数据库产品展开产品集成认证。测试结果表明,晨云信息旗下晨云-站群管理系统(V1.0)与阿里云以下产品:开源云原生数据库PolarDB PostgreSQL版(V11),完全满足产品兼容认证要求,兼容性良好,系统运行稳定。
|
26天前
|
关系型数据库 分布式数据库 数据库
PolarDB常见问题之数据库不能自己减少节点如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
26天前
|
缓存 关系型数据库 分布式数据库
PolarDB常见问题之数据库cpu突然飙高如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
29天前
|
关系型数据库 Serverless 分布式数据库
PolarDB PostgreSQL版Serverless功能上线公测啦,公测期间免费使用!
Serverless数据库能够使得数据库集群资源随客户业务负载动态弹性扩缩,将客户从复杂的业务资源评估和运维工作中解放出来。PolarDB PostgreSQL版 Serverless提供了CPU、内存、存储、网络资源的实时弹性能力,构建计算与存储分离架构下的 PolarDB PostgreSQL版产品新形态。
|
4天前
|
运维 关系型数据库 分布式数据库
「合肥 * 讯飞」4 月 19 日 PolarDB 开源数据库沙龙,报名中!
4月19日周五,PolarDB开源社区联合科大讯飞共同举办开源数据库技术沙龙,本次沙龙我们邀请了众多数据库领域的专家,期待大家的参与!
「合肥 * 讯飞」4 月 19 日 PolarDB 开源数据库沙龙,报名中!
|
26天前
|
存储 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB突然有大量服务连不上数据库如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
30天前
|
存储 关系型数据库 MySQL
TiDB与MySQL、PostgreSQL等数据库的比较分析
【2月更文挑战第25天】本文将对TiDB、MySQL和PostgreSQL等数据库进行详细的比较分析,探讨它们各自的优势和劣势。TiDB作为一款分布式关系型数据库,在扩展性、并发性能等方面表现突出;MySQL以其易用性和成熟性受到广泛应用;PostgreSQL则在数据完整性、扩展性等方面具有优势。通过对比这些数据库的特点和适用场景,帮助企业更好地选择适合自己业务需求的数据库系统。
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
**PolarDB IMCI:云原生时代的智能数据库新选择**
**PolarDB IMCI:云原生时代的智能数据库新选择**
24 4
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
近日,阿里云旗下的自研云原生数据库PolarDB在2024年中国数据库流行度排行榜中夺冠,并刷新了榜单总分纪录,这一成就引起了技术圈的广泛关注。这一成就源于PolarDB在数据库技术上的突破与创新,以及对开发者和用户的实际需求的深入了解体会。那么本文就来分享一下关于数据库流行度排行榜的影响力以及对数据库选型的影响,讨论PolarDB登顶的关键因素,以及PolarDB“三层分离”新版本对开发者使用数据库的影响。
74 3
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力