什么是Aurora
Amazon Aurora是一种基于云且完全托管关系型数据库服务,与MySQL 和 PostgreSQL 数据库兼容,完全托管意味着自动对数据库进行管理,包括管理数据备份、硬件配置和软件更新等操作
Amazon Aurora提供了企业级性能
Amazon Aurora提供了多种实例类型,不同的实例类型有不同的CPU,内存,带宽等配置,用户可以根据需求选择合适的实例类型来支持自己的业务
Amazon Aurora 提供了可扩展性,可以根据需要自动扩大或缩小存储规模。Amazon Aurora 将自动从最小 10 GB 存储扩展到 64 TB 存储,每次增量为 10 GB,且扩展不会影响数据库的性能
什么是Redshift
Amazon Redshift 是一个基于云的完全托管的数据仓库服务。开发人员可以使用 redshift 来构建、查询和维护多达 PB 或更多的数据。
每个 Redshift 数据仓库都是完全托管的,这意味着备份创建、安全和配置等管理任务都是自动化的。
Redshift 中的每个数据仓库都由一组节点组成。这些节点被组织成集群,使得对大量数据运行分析查询变得容易。
许多现有的基于 SQL 的客户端,以及范围广泛的数据源和数据分析工具,都可以与 Redshift 一起使用。它具有稳定的架构,可以轻松地与各种商业智能工具进行交互。
由于 Redshift 旨在处理大量数据,因此其模块化设计使其能够轻松扩展。它的多层结构使一次处理多个查询变得简单。
可以从 Redshift 集群创建切片,允许对数据集进行更精细的检查
Redshift 提供的性能指标可用于跟踪数据库的健康状况
为什么会有从Aurora到Redshift数据同步的需求
Aurora 是一个基于行的数据库,这使得它最适合事务查询(OLTP)业务,比如Web 应用程序。想根据用户 ID 查找用户名?使用 Aurora 很容易做到。
Redshift 是一个基于列的数据库,旨在高效处理对大量数据的复杂查询,这使得它最适合数据分析(OLAP)业务,比如电商网站用户行为分析。
比如我们可以用Aurora来实现电商网站的基本业务功能,用户管理,订单管理,商品管理等基本功能,然后用Redshift来实现用户行为分析,商品销售情况分析等等需要处理海量数据的查询功能。
AWS Data Migration Service
AWS Database Migration Service (AWS DMS) 用于管理和迁移云上的数据库。
借助 AWS DMS,客户可以跨许多流行的商业数据库同步数据,包括 Microsoft SQL Server、Amazon Aurora 和 MySQL。
使用 AWS DMS,用户可以运行一次性迁移或设置持续同步。
在同步数据库之前,需要在云服务器上创建一个复制实例。此实例读取源数据并将其加载到目标。
如何使用AWS DMS从Aurora同步数据到Redshift
在实际开发过程中,我们的web服务器位于VPC public subnet中,允许任何客户端进行访问
用户数据库一般位于VPC的private subnet中,且只允许同一个VPC的web服务器进行访问,以保证数据库的安全
DMS进行数据同步使用的instance也只需要位于private subnet,无需对外开放
因此我们首先需要创建一个VPC,vpc的架构如下:
![](https://i-blog.csdnimg.cn/blog_migrate/b316f7f093822c25d91e73e8930b9d60.png)
接下来我们详细介绍每一部分需要创建的资源。
IAM
如果在资源创建过程中出现类似如下没有权限的错误,则需要在AWS Web Console IAM页面为用户添加相应的权限。
User: arn:aws:iam::****:user/*** is not authorized to perform: dms:CreateReplicationSubnetGroup on resource: arn:aws:dms:ap-southeast-1:****:subgrp:aurora-to-redshift-instance because no identity-based policy allows the dms:CreateReplicationSubnetGroup action (Service: AWSDatabaseMigrationService; Status Code: 400; Error Code: AccessDeniedException; ; Proxy: null)
本文中用到的权限如下:
AmazonS3FullAccess: AWS Managed Policy
AmazonVPCFullAccess: AWS Managed Policy
AmazonRDSFullAccess: AWS Managed Policy
AmazonRedshiftFullAccess: AWS Managed Policy
DMS没有找到AWS Managed Policy,需要自己手动创建一下,内容如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "dms:*",
"Resource": "*"
}
]
}
VPC
vpc
cird block: 10.10.0.0/16
internet gateway
public subnet
三个Availability Zone
private subnet
三个Availability Zone
public route table: public subnet关联的 route table
destination: 0.0.0.0/0 target: internet-gateway-id(允许与外界进行通信)
destination:10.10.0.0/16 local(内部通信)
private route table:private subnet关联的 route table
destination:10.10.0.0/16 local(内部通信)
web server security group
允许任意ip对443端口进行访问
允许自己的ipdui22端口进行访问,以便ssh到服务器上向数据库插入数据
private dms security group
只允许vpc内部访问
private aurora security group
允许web server security group对3306端口进行访问
允许dms security group对3306端口进行访问
private redshift auro