开发者学堂课程【关系型数据库 ACP 认证课程:【视频】-RDS-云关系行数据库的解析与实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/927/detail/14618
【视频】-RDS-云关系行数据库的解析与实践
3.RDS 功能概览
(1)基础管理与监控
①实例管理
②库/账号管理
③连接数据库
④参数管理
参数的调整是相对复杂的, 而RDS 中的各种参数模板可以解决这个问题。
⑤监控管理
⑥安全管理
⑦可用性管理
(2)访问与存储
①访问方式
②数据库代理
③存储类型
④存储引擎
⑤读写分离
(3)备份与恢复(主要使用 DBS )
①备份方式
②全量/增量
③自动/手动
④数据库恢复
⑤库表级备份/恢复
⑥跨地域备份/恢复
(4)数据迁移(主要使用 DTS )
①数据迁入
②数据迁出
二、RDS 的架构原理
1. RDS 架构解析
(1)下图是 RDS 的整体访问架构:
可以看到,从访问的角度看,前台业务一般在 ECS 中部署,然后 ECS 通过一个地址去(和传统数据库不同的是,为了保证数据的安全,RDS 访问时对外开放的地址只是一个 url 地址,当业务访问 url 地址时,会解析到一个负载均衡 SLB 上,然后通过 SLB 转到主实例上或者备实例上)访问数据库。如果用户开通了数据库代理,可以得到一个读写分离的地址,代理的写流量可以直接到达主实例或者备实例,读流量可以直接到达只读实例。其中实例里数据备份和日志备份存储在 OSS 中,然后生成新实例,基于新实例去找到需要恢复的数据,并将它们恢复。
(2)下图是 RDS 的底层系统架构:
可以看到,用户通过 url 解析 DNS 到防火墙,再由防火墙转到后端控制系统,当需要创建或删除实例时,会先到任务调度系统里,触发数据迁移和备份之后,再返回到集群里进行相应操作,如果用户重新创建实例,需要先到 API ,然后发送给任务调度系统,系统接受指令后创建 RDS ,再将 RDS 创建的指令返回给集群,集群会重新生成一个 RDS ,然后将信息返回给用户,最后用户根据 url 地址做相应的连接。
(3)RDS 主从切换原理
RDS 高可用版本采用主备架构,具备高可用性
①高可用控制系统主要负责所有数据库实例主备之间的健康检查以及实时切换,以保证数据库高可用性达别99.95%;
②3秒轮循一次,实例轮询井发进行,当发现有节点不健康时,需要完成秒级切换;
③高可用控制系统是作为第三方身份去判断数据库实例是否在正常运行,不会出现脑裂现象;
④可模拟应用去做更新,这样对故障点的判断更为准确;
⑤高可用系统集群本身也是一个高可用的环境,集群内所有节点相互检查和任务接管。
如图:
当主备服务器发生切换时,首先需要 HA 系统做一个轮循,为了避免传统模式可能出现的脑裂现象,高可用控制系统是作为第三方身份先进行轮循,判断数据库实例是否在正常运行,若发现主实例无法正常运行, HA 将发送信号给任务调度系统,以告知 LVS 需要进行主从切换,即把主实例切换到备实例,这样就不会出现脑裂现象。
2. RDS 核心技术解析
(1)RDS 自研内核-AliSQL 简介
AliSQL 是阿里云深度定制的独立 MySQL 分支,除了社区版的所有功能外,AliSQL 提供了类似于 MySQL 企业版的诸多功能,如企业级备份恢复、线程池等。RDS MySQL 使用 AliSQL 内核,为用户提供了 MySQL 所有的功能,同时提供了企业级的安全、备份、恢复、监控、性能优化、只读实例等高级特性。
如图:
可以看到,在通用基准测试场景下, AliSQL 版本比 MySQL 官方版本有着70%的性能提升。在秒杀场景下,性能提升100倍。
(2)AliSQL 增强 Feature 类别介绍
①功能增强型如:
Thread Pool
Statement Outline
Sequence Engine
Returning
Lizard事务系统
②性能增强型如:
Fast Query Cache
Binlog in Redo
Statement Queue
Inventory Hint
③稳定性增强型如:
Faster DDL
Statement Concurrency
ControlPerformance Agent
Purge Large File Asynchronously
Performance Insight
④安全增强型如:
Recycle Bin
关于AliSQL的详细信息请参考:
http://help.aliyun.com/document_detail/129925.html
文档中很多信息都是详细的,例如RDS My SQL 数据库中有阿里内核,可以看到功能概览等等,而且help中可以进行检索,如在使用My SQL中遇到一些问题,也有最佳实践进行参考。
三、RDS 的基本管理
(1)实例管理
即创建/删除/变配数据库的过程,包含:
①计费方式
②类型
③实例规格
有入门级和企业级等不同规格,其中入门级的配置比企业级的更低。
④网络类型
⑤地域/可用区
由于高可用版本有主从两个节点,所以需要选择主可用区。
⑥系列
⑦存储类型
⑧存储引擎
(2)库/账号管理
● 由于 RDS 拥有自身的数据库及数据库账号管理体系,使得用户无法直接使用命令进行数据库创建。
● 用户可以通过 RDS 管理控制台创建数据库,且数据库名称实例内唯一,实例间互不影响。
如图:
● 对于 MySQL 实例,最多可创建500个数据库
● 数据库账号管理可用于创建新的数据库账号,或者修改已有数据库账号的信息。
● RDS MySQL 实例支持两种数据库账号:高权限账号和普通账号,其中普通账号只有读权限和写权限,而高权账号虽然有创建普通账号和给普通账号赋权等权限,但是并不等于 ROOT 账号,但足以满足各种需求。
如图:
● 对于 MySQL 实例,每个实例最多可创建500个数据库账号
● 账号创建后,若账号类型无法切换,可以删除账号后重新创建同名账号
(3)如何连接 RDS 数据库
首先给一个 url 地址,把原来地址替换成 url ,然后进行以下步骤:
①确认是否满足内网访问的条件:
ECS 实例与 RDS 实例位于同一地域
ECS 实例与 RDS 实例的网络类型相同
②设置IP白名单(只有在白名单里的才能被放在 RDS 中):
通用白名单模式
高安全白名单模式
③连接 RDS 实例:可以通过原生命令行、第三方工具、程序编码、 DMS 等连接。
(4)参数管理
● RDS MySQL 为了保障服务可用性,没有开放部分重要参数,但为了满足不同的业务场景需求(如追求更高性能),RDS MySQL 提供各类系统参数模板,可以创建自定义参数模板,根据自己的业务场景,实现批量参数设置。
如图:
可以看到,上图包括可修改参数、参数修改历史、模板等可供选择,其中参数的修改包括修改参数的默认值、运行参数值、是否重启、参数值范围、参数描述等。