1. 概述
1.1 方案介绍
传统数据库架构采用单节点架构,其优点是部署和开发简单,缺点就是非常难于做弹性缩扩容。OLTP系统查询慢,存在分析性场景瓶颈。本方案提供OLTP+OLAP分离架构的最佳实践。
专有云敏捷版数据库场景DBStack是阿里云企业级交易、分析、传输、治理于一体的数据库管理平台,能够帮助企业构建稳定、安全、经济的全场景数据库解决方案,快速替换Oracle、DB2、Teradata等传统数据库与数据仓库。
1.2 相关概念
OLTP:Online Transaction Processing 的简称。OLTP 的查询一般只会访问少量的记录,且大多时候都会利用索引,在线地面向终端用户直接使用的 Web 应用:金融,博客,评论,电商等系统,比如最常见的基于主键的 CRUD 操作。
OLAP:Online Analytical Processing 的简称。它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。具有共享多维信息的快速分析的特征,能够满足此特征的数据库叫做 OLAP 数据库。
HTAP:混合 OLTP 和 OLAP 的简称,是一种新兴的应用程序架构。它在事务处理和分析处理之间“打破了壁垒”。它可以实现更多信息和“实时业务”决策。近年来Gartner 提出了 HTAP 数据库概念,一个数据库既能支持 OLTP(在线事务处理),又能支持 OLAP(在线分析处理),涵盖大部分企业级应用的需求,一站解决这些问题。
2. 方案架构
2.1 方案架构图
2.2 方案优势
DBStack是阿里云企业级交易、分析、传输、治理于一体的数据库管理平台,能够帮助企业构建稳定、安全、经济的全场景数据库解决方案,快速替换传统数据库与数据仓库。
实时性强:利用 DTS 高实时将业务库(PolarDB-X)数据变更同步到 ADB 中,供分析查询业务查询,与线上业务数据延迟低。
2.3 产品/模块1介绍
专有云敏捷版数据库场景DBStack是阿里云企业级交易、分析、传输、治理于一体的数据库管理平台,能够帮助企业构建稳定、安全、经济的全场景数据库解决方案,快速替换Oracle、DB2、Teradata等传统数据库与数据仓库。
平台提供的产品包括AnalyticDB PostgreSQL、PolarDB O引擎、PolarDB-X等自研数据库,与MySQL、Redis等开源数据库,以及DTS、DMS、ADAM等生态工具。
2.4 产品/模块2介绍
PolarDB-X是由阿里巴巴自主研发的云原生分布式数据库,基于云原生一体化架构设计,可支撑超大并发规模及百PB级海量存储。
具有高可用,高兼容,高扩展,HTAP,高弹性,开发生态等优势。
2.5 产品/模块3介绍
AnalyticDB PostgreSQL版是一种大规模并行处理(MPP)数据仓库服务,可提供海量数据分析服务。AnalyticDB PostgreSQL版基于开源项目Greenplum构建,由阿里云深度扩展,兼容ANSI SQL 2003,兼容PostgreSQL/Oracle数据库生态,支持行存储和列存储模式。既提供高性能离线数据处理,也支持高并发在线分析查询,是各行业有竞争力的PB级实时数据仓库方案。
2.6 产品/模块4介绍
数据传输服务DTS(Data Transmission Service)是阿里云提供的一种支持关系型数据库及大数据等多种数据源之间数据交互的数据服务。相对于传统数据迁移或同步工具,DTS为您提供功能更丰富、传输性能更强、易用性更高且安全可靠的服务,帮助您简化复杂的数据交互工作,专注于上层的业务开发。
3. 方案实施
3.1 前提条件
已部署了DBStack数据库管理平台。
DBStack上部署了Polar DB-X, ADB for PG, DTS产品。
已经有普通用户角色的账号。
3.2 操作步骤
步骤一:使用PolarDB-X搭建OLTP
创建PolarDB-X实例。
登录DBStack控制台。
左侧导航栏选择实例列表 > PolarDB-X。
单击页面右上角创建新实例。
在创建实例页面,设置如下参数。
-
选项
说明
地域和可用区
通过选择地域和可用区配置实例所在的物理位置。
资源组
选择资源组。资源组是单个云账号下将一组相关资源进行统一管理的容器,一个资源只能归属于一个资源组。
引擎版本
版本固定为MySQL 5.7,不可变更。
部署方案
固定为单机房,不可变更。
节点规格
您可以通过选择不同规格配置实例物理规格CPU核数和内存大小。
存储类型
固定为本地SSD盘,不可变更。
节点数量
选择目标规格节点的节点个数,默认2个节点。
单节点存储容量
选择单节点存储容量。
- 单击创建实例。
实例状态显示创建中直到创建完成。
创建账号,PolarDB-X实例支持高权限账号和普通账号。
左侧菜单栏选择实例列表页 > PolarDB-X。
单击目标实例ID,在左侧导航栏中,单击配置与管理 > 账号管理。
单击创建账号。
在弹出的对话框中,设置如下参数。
-
参数
说明
账号名
填写账号名称。
说明 账号名称需满足如下要求:
由小写字母、数字或下划线组成,长度不超过16个字符。
以字母开头,以字母或数字结尾。
不能和已有的账号名重复。
账号类型
您可以选择账号类型为高权限账号或普通账号。
说明 每个PolarDB-X实例最多只允许创建1个高权限账号。
授权数据库
为该账号授予一个或多个数据库的权限。
选中一个或多个数据库,单击图标将其从左侧未授权数据库添加到右侧已授权数据库。
在右侧已授权数据库中,为目标数据库选择权限。
说明
仅当账号类型为普通账号时,支持该配置。
该参数为非必填项,您也可以在账号创建完成后再给账号授权。
支持的权限为读写、只读、仅DML和仅DDL。
如果要为多个数据库批量设置相同的权限,可以单击已授权数据库框右上角的权限对应按钮,如全部读写。
密码
设置账号密码。
说明 账号密码需满足如下要求:
密码长度需为8~32个字符。
由大写字母、小写字母、数字、特殊字符中的任意三种组成。
特殊字符为:
@#$%^&+=
。
确认密码
再次输入密码。
备注说明
备注该账号的相关信息,便于后续账号管理。该参数为非必填项,最多支持256个字符。
- 点击确定。
连接实例,完成创建实例,创建账号操作后,可以在DBStack控制台通过阿里云对数据管理服务DMS登录PolarDB-X数据库实例。
单击目标实例ID,打开实例的基本信息页面。
单击页面右上角的登录数据库,跳转到数据管理服务DMS页面。
填写数据库账号和数据库密码,点击登录。
登录后进入白屏化SQL Console页面,可以直接进行SQL操作。
步骤二:使用AnalyticDB PostgreSQL搭建OLAP
创建ADBPG实例。
在DBStack控制台左侧导航栏中,单击实例列表 > AnalyticDB PostgreSQL。
单击左上角创建实例。
在创建实例页面,设置如下参数。
-
参数
说明
地域
选择实例所属地域。
主可用区
选择实例所属的主可用区。
部署方案
选择部署方案,方案如下:
单可用区部署
多可用区部署
备可用区
选择实例所属的备可用区。
说明 仅部署方案为多可用区部署时,才需要配置该参数。
计算组规格
计算组是对物理机资源的切分,用于存放多个Segment节点。相同实例的计算组会分布在不同物理机。为独占物理资源请选择大规格。
计算组数量
所需的计算组的数量。最小为2组,且可以按2组进行递增。最大为1024组。
存储类型
仅支持SSD。
实例分组
选择要将该实例添加至哪个实例分组。实例分组用于分组管理当前账户下的实例。
说明 关于更多实例分组相关介绍,请参见DBStack平台用户指南的资源组概述章节。
Segment节点规格
Segment节点是计算资源的单位。此处需选择单个节点的规格。不同的节点规格具有不同的存储空间和计算能力。
2C:每个节点的配置为2核、16GB内存、50GB存储。该规格适用于低并发(通常小于10)、高吞吐、低延时的场景。
4C:每个节点的配置为4核、32GB内存、100GB存储。该规格适用于高并发(大于10)、低吞吐、高延时的场景。
说明 为了保证实例整体的性能,建议Segment节点数据量/内存<=20,以保证较高的缓存命中率。
Segment节点数量
不可修改。根据所选择的计算组规格、计算组数量以及Segment节点规格,自动计算出所需要的节点数量。
节点个数的增加可以线性地提升性能。
计算公式:Segment节点数量=计算组规格*计算组数量/Segment节点规格
Segment节点配置
不可修改。根据所选择的Segment节点规格,展示具体的规格详情。
- 单击创建实例。
实例状态显示创建中直到创建完成。
创建账号。
在DBStack控制台左侧导航栏中,单击实例列表 > AnalyticDB PostgreSQL。
单击目标实例ID,进入基本信息页面。
在左侧导航栏中,单击账号管理。
在账号管理页面,单击创建初始账号。
填写数据库账号和密码,然后单击确定。
-
参数
说明
数据库账号
初始账号的名称,要求如下:
由小写字母、数字或下划线(_)组成。
以小写字母开头,以字母或数字结尾。
长度为2~16个字符。
例如:user4example。
密码
初始账号的密码,要求如下:
由大写、小写、数字或特殊字符中的三类字符组成。
长度为8~32个字符。
确认密码
再次输入初始账号的密码。
连接数据库,完成创建实例,创建账号操作后,可以在DBStack控制台通过阿里云对数据管理服务DMS登录PolarDB-X数据库实例。
在DBStack控制台左侧导航栏中,单击实例列表 > AnalyticDB PostgreSQL。
单击目标实例ID,进入基本信息页面。
单击页面右上角登录数据库,跳转到数据管理服务DMS页面。
填写数据库账号和数据库密码,点击登录。
登录后进入白屏化SQL Console页面,可以直接进行SQL操作。
步骤三:搭建业务系统,数据可直接落入OLTP中
这里借助ASE流量来模拟业务系统。
1.查询OLTP数据连接。
2.配置进ASE连接数据库。
3.启动ASE流量。
4.确认ASE流量数据可被正确落入OLTP库。
步骤四:使用DTS连接OLTP与OLAP
创建迁移实例。
登录DBStack控制台,在概览页下方的工具区域,单击进入DTS。
在左侧导航栏,单击数据迁移。
单击页面左上角的创建任务。
在弹出的对话框中,选择数据迁移实例的参数配置。
-
参数
说明
源数据库类型
选择源数据库类型。
源区域
选择源实例所属的地区。
说明 源地域为任务链路源实例所在地域,订购后不支持更换地域,请谨慎选择。
目标数据库类型
选择目标数据库类型。
目标区域
选择目标实例所属的地区。
说明 目标地域为任务链路源实例所在地域,订购后不支持更换地域,请谨慎选择。
购买数量
一次性创建数据迁移实例的数量。
- 单击购买。
配置迁移任务。
在迁移任务列表中,找到刚创建的数据迁移实例,单击配置迁移任务。
配置源库和目标库信息。
-
类别
配置
说明
无
任务名称
DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
源库信息
数据库类型
选择为PolarDB-X 2.0。
说明 您也可以根据业务需要重新选择源库的数据库类型。
接入方式
固定为阿里云实例。
实例地区
选择源库所属的地域。
实例ID
选择需要迁移的数据库实例。
数据库账号
填入源库的数据库账号。
如需增量数据迁移,该账号需具备REPLICATION SLAVE、REPLICATION CLIENT、SHOW VIEW和待迁移对象SELECT权限。
如果不需要增量数据迁移,该账号需具备待迁移对象SELECT权限。
数据库密码
填入该数据库账号的密码。
目标库信息
数据库类型
选择为AnalyticDB PostgreSQL。
说明 您也可以根据业务需要重新选择目标库的数据库类型。
接入方式
固定为阿里云实例。
实例地区
选择目标库所属的地域。
实例ID
选择目标库的实例ID。
数据库名称
填入在目标库已经创建好的数据库名称。
数据库账号
填入目标库的数据库账号,需具备目标库的ALL权限。
数据库密码
填入该数据库账号的密码。
配置完成后,单机页面右下角的测试连接以进行下一步。
配置任务对象及高级配置。
基础配置。
配置
说明
任务步骤
如果只需要执行全量迁移,同时选中库表结构迁移和全量迁移。
如果需要执行不停机迁移,同时选中库表结构迁移、全量迁移和增量迁移。
说明 如果没有选择增量迁移,为保障数据一致性,数据迁移期间请勿在源库中写入新的数据。
目标已存在表的处理模式
预检查并报错拦截:检查目标数据库中是否有同名的表。如果目标数据库中没有同名的表,则通过该检查项目;如果目标数据库中有同名的表,则在预检查阶段提示错误,数据迁移任务不会被启动。
说明 默认情况下,迁移对象在目标库中的名称与源库保持一致。如果您需要改变迁移对象在目标库中的名称,需要使用对象名映射功能,详情请参见库表列映射。
忽略报错并继续执行:跳过目标数据库中是否有同名表的检查项。
警告
选择为忽略报错并继续执行,可能导致数据不一致,给业务带来风险,例如:
表结构一致的情况下,如果在目标库遇到与源库主键的值相同的记录,在全量迁移阶段会保留目标库中的该条记录;在增量迁移阶段则会覆盖目标库的该条记录。
表结构不一致的情况下,可能会导致无法全量迁移数据、只能迁移部分列的数据或迁移失败。
实例级别选择所需同步的DDL和DML
根据业务需求,实例级别选择进行增量数据迁移阶段需要同步的DDL和DML操作类型,默认全部选中。
说明 如需选择库或表级别的DDL或DML操作,在已选择对象中,右击具体的库或表,在弹跳框中进行配置。
同步对象
在源库对象框中单击待迁移的对象,然后单击图标将其移动至已选择对象框。
说明
迁移对象选择的粒度为库、表或列。
默认情况下,迁移对象在目标库中的名称与源库保持一致。如果您需要改变迁移对象在目标库中的名称,需要使用对象名映射功能,详情请参见库表列映射。
如果使用了对象名映射功能,可能会导致依赖这个对象的其他对象迁移失败。
高级配置。
配置
说明
源、目标库无法连接重试时间
默认重试120分钟,您也可以自定义重试时间。如果DTS在设置的时间内重新连接上源、目标库,迁移任务将自动恢复。否则,迁移任务将失败。
配置完成后,单击下一步预检查并启动。
预检查通过率显示为100%时,单击返回列表,查看迁移任务进度。
4. 方案验证
4.1 验证一:数据迁移
全量迁移完成。
点击数据迁移任务,确认全量迁移任务成功。
通过DMS操作ADBPG实例,确认数据被正确迁移到ADBPG数据库中。
增量迁移任务正常启动执行。
点击数据迁移任务,确认增量迁移任务启动并在执行中。
4.2 验证二:业务流量不受影响
PolarDB-X数据往ADBPG迁移过程是借助于DTS的服务,在这个过程中,对于业务的支撑不受影响,并且业务写入OLTP的数据可以被持续不断的写入OLAP中
业务不受影响。
业务写入OLTP的数据可以被DTS持续不断的写入OLAP中,可在DTS页面看到当前增量迁移一直运行中。
通过DMS验证当前OLTP与OLAP数据。
查询OLTP最后插入数据。
SELECT * FROM `customer` LIMIT 20 ORDER BY id desc;
SELECT * FROM `orders` LIMIT 20 ORDER BY id desc;
OLAP中可以进行多表join 查询进行数据分析。这里模拟手工出数据信息,实际业务应用中可以用业务系统或者quickBI图形化进行分析。
select count(c_custkey) from customer, orders where customer.c_custkey=orders.o_custkey and customer.id= orders.id;
4.3 验证三:监控告警、SQL审计 (PolarDB-X, ADBPG,DTS)
DBStack上内置了实例监控功能,提供丰富的性能监控项,可以查看PolarDB-X, ADBPG,DTS的监控指标。
OLTP数据实例监控,PolarDB-X
PolarDB-X内置的SQL日志明细可以帮助运维人员对业务系统SQL进行审计。
OLAP数据类型监控,ADBPG实例监控
ADBPG实例支持SQL审计,可以帮助运维人员对于数据分析系统SQL进行审计。
DTS任务监控
4.4 验证四:OLTP备份恢复
PolarDB-X提供实例级备份恢复能力,运维人员可以根据企业应用需求,进行备份设置,并可以使用已有的数据备份进行实例恢复。
4.5 验证五:数据安全
PolarDB-X与ADBPG都内置了SSL证书功能,可保护数据链路访问,默认关闭,可针对业务需求手工开启。
PolarDB-X安全管理
ADBPG安全管理
4.6 验证六:故障切换、故障修复
PolarDB-X为分布式实例,具备高可用能力与故障恢复能力。
方案验证:
对PolarDB-X进行故障注入,例如删除掉PolarDB-X下属XDB的主节点。
故障注入前,观察三节点都处于正常运行状态。
删除掉实例主节点后,观察流量出现短暂下跌后恢复。
在杜康页面上看到当前主节点发生了切换,以前的实例follower节点变为leader节点对外提供服务。
当前实例仍留存两个节点对外提供服务,暂时不影响实例高可用能力。
巡检会对实例状态进行检查,发现XDB只保留两个节点,会自动触发备库重搭任务,这个需要20分钟左右。
备库重搭任务结束后,XDB恢复三节点对外提供服务。