企业运维训练营之数据库原理与实践— RDS基础概念介绍—RDS基础概念介绍(上)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 企业运维训练营之数据库原理与实践— RDS基础概念介绍—RDS基础概念介绍(上)

第一章 RDS基础概念介绍

 

一、 RDS基础概念介绍

 

image.png

 

云数据库RDS是Relation Database Service的简称,它是关系型数据库,也是OLTP类的数据库,是基于阿里云飞天分布式操作系统与SSD盘高性能存储的数据库,支持MySQL、PostgreSQL、SQLServer、MariaDB引擎。其中MySQL与PG经过深度自研的内核,相比于开源有一些独有的功能,比如AliSQL上提供了sequence引擎,可以作为自增值的替代方案;又比如大表的异步删除,可以避免引起实例性能抖动或夯掉的风险。

 

除了基础版本以外,RDS均提供了双机热备、数据多副本冗余、自动备份、性能监控、异地容灾、备份与恢复、主备库故障切换等功能,保证了云数据库的安全性、稳定性、可靠性。

 

相比于本地自建数据库,云上RDS数据库无需购买硬件、安装软件,具备开箱即用、低运维的特点;也不必担心硬件规划的问题,能够根据资源需要随时动态调整资源规格。针对MySQL、PostgreSQL、SQLServer、MariaDB引擎,也都做到了透明兼容,可直接迁移使用。

 

自动化运维方面,云RDS数据库提供了API/SDK功能,能够通过API/SDK完成自动化的管理与监控数据库的相关功能;能够通过DAS自动弹性伸缩来减少成本。另外,也可以利用DAS的异常诊断,及时发现数据库运行过程中出现的异常,并可针对异常问题进行自动分析限流、自动添加索引、判断索引添加效果等。

 

云RDS数据库是云上全托管数据库,在容灾、备份、恢复、监控、迁移等方面提供了全套解决方案。

 

容灾方面,购买RDS数据库时,可以选择多可用区部署的形态,可以提供机房级别的容灾能力。对于要求更高的场景,比如跨地域的容灾能力,可以基于DTS数据传输工具,搭建两个RDS实例之间的数据同步,提供跨地域的容灾能力。

 

备份方面,除了RDS实例本身提供的自动备份功能外,也有DBS数据备份功能、跨地域备份功能,可以满足额外的备份需求。

 

恢复方面,可以基于备份在控制台直接操作,恢复到某个备份集或某个时间点以应对恢复需求。

 

监控方面,RDS控制台提供了多个监控项目,比如性能监控指标,诸如CPU、QPS等;也提供了日志监控能力,比如错误日志、洞察日志,帮助审计数据库的运行情况。比如通过SQL洞察功能,可快速准确地掌握SQL在什么时间点开始执行、由哪个用户发起等信息。

 

迁移方面,通过DTS数据传输工具,可以支持同构与异构数据库之间的迁移。在实际业务场景中,经常会遇到以RDS MySQL作为关系型数据库满足日常业务需求,通过DTS数据传输工具将数据同步到比如ADB MySQL或Clickhouse等OLAP类的分析型数据库做报表分析操作。又比如,可以用DTS订阅任务订阅RDS MySQL、RDS PG的日志,使客户端消费相关日志完成业务解耦的需求。

 

云上RDS数据库能够让我们更加聚焦于业务本身的开发,减少运维管理的麻烦。

 

image.png

 

云RDS数据库包括4个系列,分别为基础版本、高可用版本、集群版本与三节点企业版本。每个版本支持的数据库引擎类型不同,适合的业务场景也不同,需要根据业务的特点合理选型。

 

基础版支持MySQL、PG、SQLServer引擎,是单节点部署、计算与存储分离的架构,使用了SSD云盘存储,因此,在备份方面只支持快照备份。另外,它不支持只读节点,无法提供读写分离的功能。因其为单节点的部署架构,因此当节点遇到意外宕机、执行重启或变配、升级版本操作时,会出现较长时间的不可用。因此基础版本不适用于生产环境中,一般只适用于测试环境。

 

高可用版本支持MySQL、PG、SQLServer、MariaDB四种引擎,采用一主一备的高可用架构,支持高可用的容灾切换。当主实例不可访问时,可以快速切换到备实例上。另外MySQL与PG也支持只读实例,可以通过添加只读实例实现读写分离,分担主实例的读请求压力。

 

集群版目前支持MySQL,SQLServer 2种引擎。MySQL引擎采用一主一备或一主二备的高可用性部署,所有备节点可以提供读访问,但是目前集群版本不支持创建只读实例,所以最多可以提供2个只读节点提供访问。SQLServer采用一主一备的高可用架构。备实例可以提供只读访问,也可以创建只读实例以实现读写分离的功能。高可用版本与集群版本的区别仅在于支持的引擎不同和备节点是否可以提供读请求访问。

 

三节点企业版只支持MySQL引擎,采用一主一备一日志的三节点架构部署。当主实例不可访问时,可快速切换到备实例上,实现快速恢复。需要注意,写入相关的操作时,必须保证至少两个节点同步到日志之后才可以完成事务的提交。因此业务保障上的要求为金融级别,目前三节点企业版即将下线,后续有集群版本替换相关安全保证。

 

无论是哪种系列,数据库引擎部署在云平台上,都是对计算资源、存储资源、网络资源创建实例,做相应的资源划分隔离。根据业务量的访问不同,可以灵活地对计算资源做弹性升降配。存储上,只有本地SSD盘才可以支持降低存储的操作,其他存储类型只支持升级存储容量,不支持降低。如果存储空间打满,也会导致实例被锁定,变为只读的状态。因此在业务上或实际生产中,需要注意配置存储的使用率告警,避免存储空间被打满。

 

另外,云RDS数据库也可以支持不同的引擎之间小版本与大版本的升级,社区版本的bug修复或引入新特性后,会通过内核小版本或大版本的发布做迭代。如果小版本太旧,也会主动推送相关升级提示,避免实例稳定性受到影响。

 

image.png

 

RDS实例规格包括共享规格、通用规格、独享规格。

 

共享型只支持SQLServer引擎。每个实例独享被分配到的内存与存储资源,与同一物理机上的其他共享规格实例共享CPU资源,因此可能存在CPU竞争。这适用于对成本有要求但是对稳定性要求较低,需要SQLServer高可用保障业务可用性的场景。

 

通用型支持四种引擎,分为本地盘与云盘。本地盘存在CPU的竞争关系,云盘实例存储资源不和CPU及内存绑定,可以灵活选配。云盘是On-ECS的形态,而ECS本身需要开销一部分内存。在今年6月份之前,实例的内存使用率上没有刨除系统本身开销的内存,因此会让客户误以为内存使用率没有达到百分之百却出现OOM的情况。对此,我们已经对RDS MySQL,RDS PostgreSQL内存在监控上做了修正。

 

通用型存在资源的复用,因此也会存在争抢。如果对业务稳定性要求高,则不建议采用共享型与通用型的实例。

 

独享型也支持四种引擎,完全独享CPU与内存,不会造成资源竞争。独享型适用于对性能稳定性要较求较高的场景。

 

每一种架构对于不同版本均提供了多种规格。

 

云盘的实例除了IOPS能力,还有IO带宽的限制。IO带宽又与存储空间大小相关,比如会按照存储的大小计算IO带宽的大小。IOPS打满或IO打满都会导致实例出现IO方面的瓶颈。IOPS方面,可以通过IOPS使用率进行观察。而针对IO带宽打满目前在前端还未有相关的监控能力,如有需要可提交工单咨询确认。

 

image.png

 

网络方面分为经典网络与专有网络。

 

经典网络采用三层隔离,共用的基础网络上不同用户之间的网络相通。RDS实例只能依靠白名单与账号密码做安全防护,安全性较低。因此,我们推荐最好使用VPC专有网络,目前VPC专有网络也不再支持从专有网络切换到经典网络,如果大家还有经典网络的RDS实例,建议大家可以考虑升级到专有网络。

 

VPC网络也就是虚拟专业网络,采用两层隔离。相对于经典网络,具有更高的安全性与灵活性。不同的VPC之间为相对隔离的环境,可以根据不同的业务类型,按产品划分到不同的VPC网络以保证网络的安全性。

 

在RDS网络拓扑上,当一台ECS部署了程序发起连接时,首先会通过DNS解析RDS的域名,域名会解析到RDS前端的SLB上,再由SLB转发给后端的RDS主实例。如果RDS实例开通了读写分离功能,则会存在代理,SLB会先转发给代理,再由代理转发给后端的RDS 主库或从库,实现读写分离的架功能。

 

购买多可用区实例时需要注意,ECS、SLB与RDS主库可能会跨地域,比如ECS在可用区y,SLB与RDS主库在可用区x,属于跨机房。该种情况下,由于物理距离的增加,会导致网络延迟增加,3ms以内的延迟为正常范围,对网络延迟特别敏感的业务需要考虑这种跨可用区带来的影响。

 

程序访问时需要使用域名地址,不建议使用域名解析生成的VIP进行访问。比如实例变配可能会导致底层的VIP发生变化,如果依然使用域名访问,可能会出现访问连接不到的情况,因此在生产上建议使用域名访问,而且需要保证应用上具有自动重连的机制,比如RDS主库与从库发生了HA切换,此时SLB会将重新解析的请求转发给之前的从库,之前的连接会断开。如果ECS上部署的程序无法自动重连,会导致业务影响时长被拉长。另外,尽量不要对域名做本地解析,底层VIP变化之后此时访问就会出现问题。


接下篇:/article/new/supportservice?spm=a2c6h.12873639.article-detail.4.a5317d6dMmaTam&publish=1225650#/?_k=zimvb8

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
消息中间件 运维 Kubernetes
构建高效自动化运维体系:Ansible与Kubernetes的融合实践
【5月更文挑战第9天】随着云计算和微服务架构的普及,自动化运维成为确保系统可靠性和效率的关键。本文将深入探讨如何通过Ansible和Kubernetes的集成,构建一个强大的自动化运维体系。我们将分析Ansible的配置管理功能以及Kubernetes容器编排的优势,并展示如何将二者结合,以实现持续部署、快速扩展和高效管理现代云原生应用。文章还将涵盖实际案例,帮助读者理解在真实环境下如何利用这些工具优化运维流程。
|
1天前
|
运维 监控 算法
构建高效自动化运维体系的实践与思考
【5月更文挑战第15天】 随着信息技术的飞速发展,企业对IT运维管理的要求越来越高。传统的手动运维已无法满足日益增长的业务需求,因此,构建一个高效、可靠且易于管理的自动化运维体系变得至关重要。本文将探讨在现代企业环境中,如何通过一系列策略和技术手段实现运维自动化,以及在此过程中可能遇到的挑战和解决方案。文章将基于实际案例分析,提供一种系统性的思考框架,帮助读者理解和构建适合自己的自动化运维体系。
|
1天前
|
运维 资源调度 监控
构建高效自动化运维流程的策略与实践
【5月更文挑战第15天】 在现代IT基础设施管理中,自动化运维已成为提高效率、确保稳定性和快速响应变化的关键。本文将探讨构建高效自动化运维流程的策略与实践,重点在于如何通过一系列切实可行的步骤实现从人工密集型到自动化驱动的转变。我们将讨论工具选择、流程设计、最佳实践以及持续改进的重要性,旨在帮助读者构建一个既灵活又可靠的自动化运维环境。
17 3
|
1天前
|
运维 监控 Kubernetes
构建高效自动化运维体系:基于容器技术的持续集成与持续部署(CI/CD)实践
【5月更文挑战第15天】 随着云计算和微服务架构的普及,传统的IT运维模式面临转型压力。为提高软件交付效率并降低运维成本,本文探讨了利用容器技术实现自动化运维的有效策略。重点分析了在持续集成(CI)和持续部署(CD)流程中,容器如何发挥作用,以及它们如何帮助组织实现敏捷性和弹性。通过具体案例研究,文章展示了容器化技术在自动化测试、部署及扩展中的应用,并讨论了其对系统稳定性和安全性的影响。
|
1天前
|
运维 监控 安全
构建高效自动化运维系统:基于容器技术的持续集成与持续部署(CI/CD)实践
【5月更文挑战第14天】 随着DevOps文化的深入人心,持续集成与持续部署(CI/CD)已成为现代软件工程不可或缺的组成部分。本文将探讨如何利用容器技术,尤其是Docker和Kubernetes,构建一个高效、可扩展的自动化运维系统。通过深入分析CI/CD流程的关键组件,我们将讨论如何整合这些组件以实现代码从提交到生产环境的快速、无缝过渡。文章还将涉及监控、日志管理以及安全性策略等运维考量,为读者提供一个全面的自动化运维解决方案蓝图。
|
1天前
|
SQL 关系型数据库 Serverless
阿里云关系型数据库RDS
阿里云关系型数据库RDS
15 2
|
1天前
|
存储 Java 分布式数据库
【分布式计算框架】HBase数据库编程实践
【分布式计算框架】HBase数据库编程实践
12 1
|
1天前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于容器技术的持续集成与部署实践
【5月更文挑战第13天】 在现代软件开发周期中,持续集成(CI)和持续部署(CD)已成为提升开发效率、保障产品质量的关键环节。随着云计算和微服务架构的普及,容器技术如Docker和Kubernetes为运维领域带来了革命性的变革。本文旨在探讨如何利用容器技术构建一个高效、可靠的自动化运维体系,实现从代码提交到产品发布的全过程自动化管理。通过深入分析容器化技术的核心原理,结合实际案例,我们将阐述如何优化持续集成流程、确保自动化测试的覆盖率、以及实现无缝的持续部署。
16 2
|
1天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
19 0
|
1天前
|
前端开发 关系型数据库 MySQL
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
【MySQL × SpringBoot 突发奇想】全面实现流程 · 数据库导出Excel表格文件的接口
16 0
http://www.vxiaotou.com