将 RDS Custom for SQL Server 的单可用区部署修改为多可用区部署 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将 RDS Custom for SQL Server 的单可用区部署修改为多可用区部署

您可以将现有的 RDS Custom for SQL Server 数据库实例从单可用区部署修改为多可用区部署。修改数据库实例时,Amazon RDS 会执行多项操作:

  • 拍摄主数据库实例的快照。

  • 从快照中为备用副本创建新卷。这些卷在后台初始化,并在数据完全初始化后达到最大卷性能。

  • 开启主数据库实例与辅助数据库实例之间的同步块级复制。

重要

我们建议您避免在高峰活动期在生产数据库实例上将 RDS Custom for SQL Server 数据库实例从单可用区部署修改为多可用区部署。

Amazon 使用快照创建备用实例,以避免在从单可用区转换到多可用区时出现停机,但是在转换为多可用区期间和转换后,性能可能会受到影响。对于对写入延迟敏感的工作负载而言,这可能会产生很大的影响。尽管此功能允许快速从快照中还原大型卷,但由于同步复制,该功能可能会导致 I/O 操作的延迟增加。这种延迟可能会影响您的数据库性能。

使用 CloudFormation 配置先决条件,以将单可用区部署修改为多可用区部署

要使用多可用区部署,必须确保应用了满足先决条件的最新 CloudFormation 模板,或者手动配置最新的先决条件。如果您已经应用了最新的 CloudFormation 先决条件模板,则可以跳过这些步骤。

使用 CloudFormation 配置 RDS Custom for SQL Server 多可用区部署先决条件

  1. 通过以下网址打开 CloudFormation 控制台:https://console.aws.amazon.com/cloudformation

  2. 要启动创建堆栈向导,请选择用于创建单可用区部署的现有堆栈,然后选择更新

    此时会显示更新堆栈页面。

  3. 对于先决条件 - 准备模板,请选择替换当前模板

  4. 对于 Select Template(选择模板),执行以下操作:

    1. 下载最新的 Amazon CloudFormation 模板文件。打开链接 custom-sqlserver-onboard.zip 的上下文(右键单击)菜单,然后选择 Save Link As(将链接另存为)。

    2. custom-sqlserver-onboard.json 文件保存并提取到您的计算机中。

    3. 对于 Template source(模板来源),选择 Upload a template file(上载模板文件)。

    4. 对于 Choose file(选择文件),请导航到 custom-sqlserver-onboard.json 并选择它。

  5. 选择下一步

    此时将出现 Specify stack details(指定堆栈详细信息)页面。

  6. 要保留原定设置选项,请选择 Next(下一步)。

    将出现高级选项页面。

  7. 要保留原定设置选项,请选择 Next(下一步)。

  8. 要保留原定设置选项,请选择 Next(下一步)。

  9. 检查更改页面上,执行以下操作:

    1. 对于 Capabilities(功能),请选中 I acknowledge that Amazon CloudFormation might create IAM resources with custom names(我确认 Amazon CloudFormation 可能使用自定义名称创建 IAM 资源)复选框。

    2. 选择提交

  10. 验证更新是否成功。成功操作的状态将显示 UPDATE_COMPLETE

如果更新失败,则将回滚更新过程中指定的任何新配置。现有资源将仍然可用。例如,如果添加编号为 18 和 19 的网络 ACL 规则,但存在编号相同的现有规则,则更新将返回以下错误:Resource handler returned message: "The network acl entry identified by 18 already exists.。在这种情况下,您可以修改现有 ACL 规则以使用小于 18 的编号,然后重试更新。

手动配置先决条件,以将单可用区部署修改为多可用区部署

重要

为了简化设置,我们建议您使用网络设置说明中提供的最新 Amazon CloudFormation 模板文件。有关更多信息,请参阅 使用 CloudFormation 配置先决条件,以将单可用区部署修改为多可用区部署

如果您选择手动配置先决条件,请执行以下任务。

  1. 通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/

  2. 选择端点创建端点页面显示。

  3. 对于服务类别,选择 Amazon 服务

  4. 服务中,搜索 SQS

  5. VPC 中,选择在其中部署 RDS Custom for SQL Server 数据库实例的 VPC。

  6. 子网中,选择在其中部署 RDS Custom for SQL Server 数据库实例的子网。

  7. 安全组中,选择 -vpc-endpoint-sg 组。

  8. 对于策略,选择自定义

  9. 在自定义策略中,将 Amazon partitionRegionaccountIdIAM-Instance-role 替换为您自己的值。

    { "Version": "2012-10-17", "Statement": [ { "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": "custom-sqlserver" } }, "Action": [ "SQS:SendMessage", "SQS:ReceiveMessage", "SQS:DeleteMessage", "SQS:GetQueueUrl" ], "Resource": "arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:do-not-delete-rds-custom-*", "Effect": "Allow", "Principal": { "AWS": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/{IAM-Instance-role}" } } ] }
  10. 使用访问 Amazon SQS 的权限更新实例配置文件。将 Amazon partitionRegionaccountId 替换为您自己的值。

    { "Sid": "SendMessageToSQSQueue", "Effect": "Allow", "Action": [ "SQS:SendMessage", "SQS:ReceiveMessage", "SQS:DeleteMessage", "SQS:GetQueueUrl" ], "Resource": [ { "Fn::Sub": "arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:do-not-delete-rds-custom-*" } ], "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": "custom-sqlserver" } } } >
  11. 更新 Amazon RDS 安全组的入站和出站规则以允许端口 1120。

    1. 安全组中,选择 -rds-custom-instance-sg 组。

    2. 对于入站规则,创建自定义 TCP 规则,以允许源 -rds-custom-instance-sg 组使用端口 1120

    3. 对于出站规则,创建自定义 TCP 规则,以允许端口 1120 连接到目标 -rds-custom-instance-sg 组。

  12. 在您的私有网络访问控制列表(ACL)中添加一条规则,以允许数据库实例的源子网使用 TCP 端口 0-65535

    注意

    创建入站规则出站规则时,请记下现有的最大规则编号。您创建的新规则的规则编号必须小于 100,且与任何现有规则编号均不匹配。

    1. 网络 ACL 中,选择 -private-network-acl 组。

    2. 对于入站规则,创建全部 TCP 规则,以允许将 TCP 端口 0-65535 用于来自 privatesubnet1privatesubnet2 的源。

    3. 对于出站规则,创建全部 TCP 规则,以允许 TCP 端口 0-65535 连接到目标 privatesubnet1privatesubnet2

使用 RDS 控制台、Amazon CLI 或 RDS API 进行修改。

完成先决条件后,您可以使用 RDS 控制台、Amazon CLI 或 RDS API,将 RDS Custom for SQL Server 数据库实例从单可用区部署修改为多可用区部署。

将现有 RDS Custom for SQL Server 单可用区部署修改为多可用区部署
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在 Amazon RDS 控制台中,选择数据库

    随后会显示数据库窗格。

  3. 选择要修改的 RDS Custom for SQL Server 数据库实例。

  4. 对于操作中,选择转换为多可用区部署

  5. 确认页面上,选择立即应用以立即应用更改。选择此选项不会导致停机,但可能会对性能产生影响。或者,您可以选择在下一个维护时段内应用更新。有关更多信息,请参阅 使用计划修改设置

  6. 确认页面上,选择转换为多可用区

要使用 Amazon CLI 转换为多可用区数据库实例部署,请调用 modify-db-instance 命令并设置 --multi-az 选项。指定数据库实例标识符以及要修改的其他选项的值。有关各选项的信息,请参阅 数据库实例的设置

以下代码通过包含 --multi-az 选项来修改 mycustomdbinstance。将在下一维护时段使用 --no-apply-immediately 应用这些更改。使用 --apply-immediately 可立即应用更改。有关更多信息,请参阅 使用计划修改设置

对于 Linux、macOS 或 Unix:

aws rds modify-db-instance \ --db-instance-identifier mycustomdbinstance \ --multi-az \ --no-apply-immediately

对于 Windows:

aws rds modify-db-instance ^ --db-instance-identifier mycustomdbinstance ^ --multi-az \ ^ --no-apply-immediately

要使用 RDS API 转换为多可用区数据库实例部署,请调用 ModifyDBInstance 操作并将 MultiAZ 参数设置为 true。