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

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
云备份 Cloud Backup,100GB 3个月
简介: 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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
关系型数据库 MySQL 分布式数据库
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶,邀请好友完成更有机会获得​小米Watch S3、小米体重称​等诸多好礼!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
|
7天前
|
NoSQL 关系型数据库 分布式数据库
基于PolarDB的图分析:通过DTS将其它数据库的数据表同步到PolarDB的图
本文介绍了使用DTS任务将数据从MySQL等数据源实时同步到PolarDB-PG的图数据库中的步骤.
|
10天前
|
SQL 关系型数据库 分布式数据库
夺冠在即 | PolarDB数据库创新设计赛(天池杯)决赛答辩通知
2024年全国大学生计算机系统能力大赛PolarDB数据库创新设计赛(天池杯)于8月21日启动,吸引了200多所高校近千支队伍参赛。经过激烈角逐,60支队伍晋级决赛第一阶段,36支队伍脱颖而出进入现场答辩,将于12月29日在武汉大学争夺最终奖项。决赛要求选手基于PolarDB-PG开源代码部署集群并优化TPCH查询性能。完赛率超90%,成绩表现出明显梯度,前20名均在500秒内完成。评委来自学术界和工业界,确保评选公正。预祝选手们取得优异成绩!
|
25天前
|
Cloud Native 关系型数据库 分布式数据库
PolarDB 分布式版 V2.0,安全可靠的集中分布式一体化数据库管理软件
阿里云PolarDB数据库管理软件(分布式版)V2.0 ,安全可靠的集中分布式一体化数据库管理软件。
|
3天前
|
运维 监控 Cloud Native
云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警
在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。
18 0
|
7天前
|
NoSQL 关系型数据库 分布式数据库
PolarDB图数据库快速入门
图数据库(Graph Database)专门存储图数据,适合处理社交网络、知识图谱等复杂关系。它使用图查询语言(如Cypher、Gremlin)进行操作。PolarDB兼容OpenCypher语法,支持创建、查询、更新和删除图数据,包括模式匹配、过滤、MERGE避免重复、可视化工具等功能,简化了图数据的管理和应用。
|
2月前
|
存储 Cloud Native NoSQL
云原生时代的数据库选型与架构设计
云原生时代的数据库选型与架构设计
27 0
|
2月前
|
关系型数据库 分布式数据库 数据库
锦鲤附体 | PolarDB数据库创新设计赛,好礼不停!
锦鲤附体 | PolarDB数据库创新设计赛,好礼不停!
|
11天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
11天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
39 3