将预置集群迁移到 Amazon Redshift Serverless - Amazon Redshift

将预置集群迁移到 Amazon Redshift Serverless

可以将现有的预置集群迁移到 Amazon Redshift Serverless,从而实现按需和自动扩展计算资源。将预置集群迁移到 Amazon Redshift Serverless 后,您只需为使用的资源付费,并可根据工作负载需求自动扩展容量,从而优化成本。迁移的常见用例包括运行临时查询、定期数据处理任务,或在不过度预置资源的情况下处理不可预测的工作负载。执行以下一组任务,将预置 Amazon Redshift 集群迁移到无服务器部署选项。

创建预置集群的快照

要将数据从您的预置集群传输到 Amazon Redshift Serverless,请为您的预置集群创建快照,然后在 Amazon Redshift Serverless 中还原该快照。在您将预置的集群快照还原到无服务器命名空间时,Amazon Redshift 会自动将交错键转换为复合键。

注意

在将数据迁移到无服务器工作组之前,请确保您的预调配集群需求与您在 Amazon Redshift Serverless 中选择的 RPU 量兼容。

创建您的预置集群的快照

  1. 登录 AWS Management Console,然后通过以下网址打开 Amazon Redshift 控制台:https://console.aws.amazon.com/redshiftv2/

  2. 在导航菜单上,选择集群快照,然后选择创建快照

  3. 输入快照定义的属性,然后选择创建快照。快照可能需要一段时间才可用。

将预置集群快照还原到无服务器命名空间:

  1. 登录 AWS Management Console,然后通过以下网址打开 Amazon Redshift 控制台:https://console.aws.amazon.com/redshiftv2/

  2. 在 Amazon Redshift 预置集群控制台上开始,导航到集群快照页面。

  3. 选择要使用的快照。

  4. 选择还原快照还原到无服务器命名空间

  5. 选择要将您的快照还原到的命名空间。

  6. 确认想要从快照还原。此操作将以来自预置集群的数据替换无服务器端点中的所有数据库。选择还原

有关预置集群快照的更多信息,请参阅 Amazon Redshift 快照

使用驱动程序连接到 Amazon Redshift Serverless

要使用您的首选 SQL 客户端连接到 Amazon Redshift Serverless,您可以使用 Amazon Redshift 提供的 JDBC 驱动程序版本 2 驱动程序。我们建议使用 JDBC 驱动程序版本 2.1.x 或更高版本进行连接。端口号是可选的。如果您未将端口号包括在内,则 Amazon Redshift Serverless 将默认使用端口号 5439。您可以更改为 5431-5455 或 8191-8215 端口范围内的另一个端口。要更改无服务器端点的默认端口,请使用 AWS CLI 和 Amazon Redshift API。

要查找用于 JDBC、ODBC 或 Python 驱动程序的确切端点,请参阅 Amazon Redshift Serverless 中的工作组配置。您还可以使用 Amazon Redshift Serverless API 操作 GetWorkgroup 或 AWS CLI 操作 get-workgroups,以返回有关您工作组的信息,然后进行连接。

使用基于密码的身份验证进行连接

要使用基于密码的身份验证进行连接,请使用以下语法。

jdbc:redshift://<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com:5439/?username=enter a username&password=enter a password

要使用 Amazon Redshift Python 驱动程序进行连接,请使用以下语法,

import redshift_connector with redshift_connector.connect( host='<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com', database='<database-name>', user='enter a user', password='enter a password' # port value of 5439 is specified by default ) as conn: pass

使用 IAM 进行连接

如果您更喜欢使用 IAM 登录,请使用以下驱动程序端点。此驱动程序端点使您可以连接到特定数据库,并使用 Amazon Redshift Serverless GetCredentials API 操作。

jdbc:redshift:iam://<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com:5439/<database-name>

此驱动程序端点不支持自定义 dbUserdbGroupauto-create。原定设置情况下,该驱动程序会在登录时自动创建数据库用户,并根据您在 IAM 中定义的组将这些数据库用户分配给组。注意:您在 IAM 中指定的组名称只能包含小写字母、数字、下划线(“_”)、加号(“+”)、句点(.)、at 符号(@)或连字符(“-”)。否则,驱动程序可能无法连接到 dbGroup

请确保您的 AWS 身份具有适用于 RedshiftServerlessGetCredentials 操作的正确 IAM 策略。下面是一个示例 IAM 策略,它授予对 AWS 身份的正确权限,用于连接到 Amazon Redshift Serverless。有关 IAM 权限的更多信息,请参阅添加 IAM 身份权限

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": "redshift-serverless:GetCredentials", "Resource": "*" } ] }

使用 IAM 以及 dbUser 和 dbGroup 进行连接

如果您要使用自定义 dbUser 和 dbGroup 连接选项,请使用以下驱动程序端点。与其他 Amazon Redshift Serverless 驱动程序端点一样,此语法会在登录时自动创建数据库用户。此驱动程序端点使用 Amazon Redshift Serverless GetCredentials API 操作。dbUser 必须以字母开头,只能包含字母数字字符、下划线(“_”)、加号(“+”)、句点(“.”)、@ 符号或连字符(“-”),并且必须少于 128 个字符。dbGroup 只能包含小写字母、数字、下划线(“_”)、加号(“+”)、句点(.)、@ 符号或连字符。

jdbc:redshift:iam://redshift-serverless-<workgroup-name>:<aws-region>/<database-name>

要使用 Amazon Redshift Python 驱动程序进行连接,请使用以下语法,

import redshift_connector with redshift_connector.connect( iam=True, host='<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com', database='<database-name>', db_user='enter a user', password='enter a password', db_groups='<db-groups>' # port value of 5439 is specified by default ) as conn: pass

使用 ODBC 进行连接

要使用 ODBC 进行连接,请使用以下语法。

Driver={Amazon Redshift (x64)}; Server=<workgroup-name>.<account-number>.<aws-region>.redshift-serverless.amazonaws.com; Database=dev

使用 Amazon Redshift Serverless SDK

如果您使用 Amazon Redshift SDK 编写了任何管理脚本,则必须使用新的 Amazon Redshift Serverless SDK 来管理您的 Amazon Redshift Serverless 和关联资源。有关可用 API 操作的更多信息,请参阅《Amazon Redshift Serverless API 参考指南》