关系型数据库RDS

RDS,阿里云关系型数据库,基于阿里云分布式文件系统和SSD高性能存储。
支持 MySQL、SQL Server、PostgreSQL、MariaDB 引擎。


实例类型

基础版、高可用版、集群版(MySQL)。

基础版

  • 只有==单个数据库节点==,因为没有热备份,所以当节点意外宕机、重启、维护时,会出现长时间不可用。
  • 由于不提供备节点,不会因为实时数据库复制产生额外的性能开销,因此基础版的性能相对于同样配置的高可用版甚至有所提升。
  • 计算和存储分离,基于阿里云飞天架构的分布式存储、云盘存储数据,多副本可靠性,计算节点故障不会造成数据丢失。

高可用版

  • 采用==一主一备==的架构。备节点仅作为备份形式存在,不提供业务访问,不可读。可以添加只读节点。
  • 根据所选参数模板不同,主节点的数据会通过同步或异步的方式复制到备节点。
  • 主节点故障,自动切换到备节点
  • 备节点故障,主节点会进行实时备份,备份完成时会产生全局锁,导致主节点只读,一般不会超过5秒
  • 主备节点可以创建到同一Region的相同或不同AZ;但是不能跨Region

备节点故障影响

备节点故障时,主节点会进行实时备份,备份完成时会产生==全局锁==,导致主节点只读,一般不会超过5秒。

集群版

包括RDS MySQL集群版和RDS SQL Server集群版。

指标 基础版 高可用版 集群版
节点数 1个 2个(默认)

高可用版默认一主一备两个节点,如需更多节点可创建只读实例。
2~5个

创建集群版实例时,默认创建一主二备共3个节点,也可以创建一主一备共2个节点。实例创建完成后,可通过增加节点,将节点数量提升到最多4个,也就是一主四备共5个节点。
备节点是否可读 不涉及
地址类型 读写地址 读写地址 - 读写地址:指向主节点,处理读、写请求。
- 只读地址:指向备节点,处理读请求。
复制模式 异步、半同步 异步、半同步、组复制
最大容忍不可用节点数 0 1 n-1,n为集群版实例包含的节点数
可用区数量 1 小于或等于2 小于或等于集群版实例包含的节点数
支持的数据库 MySQL、PostgreSQL、SQL Server MySQL、PostgreSQL、SQL Server、MariaDB MySQL、SQL Server

规格族

根据CPU、内存、连接数和IOPS,提供多种规格族:

  • 共享规格
  • 通用规格
  • 独享规格

存储类型

存储类型 说明
ESSD云盘 增强型(Enhanced)SSD云盘,是阿里云全新推出的超高性能云盘产品。ESSD云盘基于新一代分布式块存储架构,结合25GE网络和RDMA技术,为您提供单盘高达==100万的随机读写能力==和更低的单路时延能力。ESSD云盘分为如下三类:

- ESSD PL1云盘:PL1性能级别的ESSD云盘。
- ESSD PL2云盘:相比PL1,PL2性能级别的ESSD云盘大约可提升==2倍==IOPS和吞吐量。
- ESSD PL3云盘:相比PL1,PL3性能级别的ESSD云盘最高可提升==20倍==IOPS、11倍吞吐量,适合对极限并发I/O性能要求极高、读写时延极稳定的业务场景。
本地SSD盘 本地SSD盘,是与数据库引擎位于同一节点的SSD盘,I/O延时低。
SSD云盘 SSD云盘,是基于分布式存储架构的弹性块存储设备,实现计算与存储分离。
说明:SSD云盘分批下线中,建议使用ESSD云盘。

选型建议

大部分情况下选择 ESSD云盘,性价比较高。


RDS for MySQL

RDS支持MySQL引擎。提供高级功能:

  • 只读实例:少量写请求,大量读请求,单个实例无法承受读取压力,对业务产生影响。可以创建多个只读实例,满足读请求。
  • 读写分离:在只读实例的基础上,额外提供一个==读写分离地址==,联动主实例和只读实例,自动创建读写分离链路。应用只需要连接读写分离地址进行数据读取和写入,读写分离程序会自动将写请求发往主实例,读请求发往只读实例。用户只需要添加只读实例的个数,即可不断扩展系统的处理能力。
  • 数据库代理
  • 自治服务DAS:智能诊断及优化
  • 专属集群MyBase

常用功能

白名单

在每个instance级别设置,默认是对本 VPC 放行。

注意

还有一个安全组功能,但是==不推荐用==,就推荐用白名单放行IP。

数据库连接

  • 访问模式是在数据库集群前面有一个SLB集群(阿里云托管,用户不可见)。SLB集群暴露一个内网访问地址。
  • 默认没有开通外网访问地址,也可以添加一个外网地址。

数据库代理

  • 如果我们有一个主实例、一个只读实例。两个实例的连接地址是不一样的。
  • 读请求发送到只读实例,写请求发送到主实例,那么就需要在代码中对两个地址予以区分
  • RDS提供一个代理功能,通过一个==统一入口地址==,实现自动检测读写请求,分发到不同的实例地址上。
  • 实现读写分离、连接池、事务拆分等功能。

备份恢复

分为数据备份和日志备份两种类型。

  • 数据备份:全量备份,完整数据文件
  • 日志备份:增量备份,记录数据修改的日志文件,需要依赖最近的一次数据备份。可以实现==任意时间点恢复==

分析实例

可以将MySQL中的数据自动同步到分析实例中,解决复杂分析查询卡顿问题。分析实例实现==毫秒级万亿数据即时分析==。


数据管理服务DMS

可以把企业自己的数据库集成进来统一管理。

管控模式

参考文档:https://help.aliyun.com/zh/dms/product-overview/control-modes#multiTask8447

管控模式 功能特性 适用场景 登录/访问方式
自由操作 - 支持27种数据库的可视化数据管理和结构管理。
- 支持在SQLConsole进行各类数据与结构的SQL变更或可视化编辑操作。
- 数据管理功能存在一定限制。
- 数据库实例无需严格管控。
- 单一用户使用。
管理员、DBA或普通用户都需要申请数据库实例的登录权限,待获取登录权限后,再输入数据库账号密码登录。
稳定变更 - 支持自由操作模式的所有功能,同时减少功能限制,如数据变更。
- 为数据库提供更加稳定运行的解决方案,如无锁变更、SQL审核。
- 数据库实例需要稳定运行,对持续可用性要求高。
- 小团队多人协同。
管理员、DBA或普通用户都需要申请数据库实例的登录权限,待获取登录权限后,再输入数据库账号密码登录。
安全协同 - 支持自由操作模式和稳定变更模式的所有功能。
- 提供DevOps功能,设计规范、研发流程、审批流程可灵活自定义。
- 需要保障数据库实例的数据安全。
- 需要对研发、变更流程强管控。
- 需要企业合规管理。
免登录,通过授权使用。
- 管理员、DBA:直接访问。
- 普通用户:获取实例、数据库、表的相关权限,直接访问。

账号管理

  • 在instance级别,可以创建高权限账号;在数据库中也能创建账号。

最佳实践

建议就在控制台上创建账号,尽量不用数据库内部的账号:
- 更加符合云原生管理实践。
- 防止内部账户和控制台的账户冲突。

  • RDS for MySQL 是可以在创建普通账号的时候同时授予数据库读写权限;PostgreSQL暂时没有

数据管理预案

性能安全

在编辑实例中,在实例级别设置在DMS上查询超时时间和导出超时时间,避免用户运行长SQL影响业务。

推荐超时设置

  • 常态设置推荐值:查询 60s,导出 600s
  • 业务高峰推荐设置:查询 5s,导出 60s
限制最大返回行数

在安全规则中,限制单次查询最大返回行数的值,避免大量数据返回影响业务正常请求响应时间。

  • 常态推荐值:200行;业务高峰期推荐值:10行
限制全表扫描最大值

在安全规则中,限制允许全表扫描SQL执行的表的大小,避免研发对超大表进行全表扫描。

  • 常态推荐值 10240MB,业务高峰期间推荐 1024MB

变更安全

拦截高风险SQL

在安全规则中对高风险SQL语句(DQL、DDL、DML、DCL)进行拦截。

  • 常态时候可以开启,业务高峰时期可以拦截
升级审批流程

大促期间,审批流程中可以增加高级别审批负责人

变更窗口管控

在执行引擎底层强制管控实例的变更窗口范围,可以限制时间段、人员发起DDL、DML、SELECT

数据安全

提高敏感信息列的等级设置

可以设置字段安全级别调整功能,将用户个人信息、身份证号等敏感字段进行==脱敏==。

开启数据水印

可以开启防泄露数字水印,系统将在整个控制台中同时提供水印。防止截图泄露。

敏感数据保护

有效识别敏感数据分布,进行细粒度权限管控、数据脱敏处理,进行最小化权限访问。

行级管控

可以设置表中行的权限。同一个表中的数据,不同人员仅能访问不同行。

访问元数据权限

限制用户访问元数据权限

指定避免一些人员接触到一些元数据(数据库、实例、表等)

设置元数据可见范围

通过元数据访问控制,避免元数据展示

应急处理

操作审计

可以快速定位指定时间段,人员是否在DMS对指定DB、表实施变更

数据追踪

在误删、误更新数据操作后,可快速恢复数据


数据归档至OSS

DMS提供数据归档功能,线上数据越来越多,影响业务运作时,可以将源库的大表数据归档到 OSS,自动清理源表已归档数据。可通过 DTS 进行数据迁移与同步。