AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWSEC2-SQLServerDBRestore

描述

AWSEC2-SQLServerDBRestore 文档将存储在 Amazon S3 中的 Microsoft SQL Server 数据库备份还原为在 Amazon Elastic Compute Cloud (EC2) Linux 实例上运行的 SQL Server 2017。您可以提供自己的运行 SQL Server 2017 Linux 的 EC2 实例。如果未提供 EC2 实例,自动化工作流程将启动,并使用 SQL Server 2017 配置新的 Ubuntu 16.04 EC2 实例。自动化支持还原完整、差异和事务日志备份。此自动化接受多个数据库备份文件,并自动还原所提供的文件中每个数据库的最近的有效备份。

要自动执行备份并将本地 SQL Server 数据库还原到运行 SQL Server 2017 Linux 的 Amazon EC2 实例,请参见 AWS 签名的 PowerShell 脚本 MigrateSQLServerToEC2Linux.ps1

重要

每次自动化工作流程运行时,此工作流程都将重置 SQL Server 服务器管理员 (SA) 用户密码。自动化工作流程完成后,在连接到 SQL Server 实例之前,您必须重新设置您自己的 SA 用户密码。

文档类型

Automation

所有者

Amazon

平台

Linux

先决条件

  • 此 Automation 文档仅使用运行 SQL Server 的 Linux EC2 实例。

  • 运行此 Automation 工作流程的用户必须至少具有在下面的所需的 IAM 权限部分指定的权限。

  • 如果您提供自己的 EC2 实例:

限制

此自动化不支持还原到在 EC2 Windows 实例上运行的 SQL Server。此自动化仅还原与 SQL Server Linux 2017 兼容的数据库备份。有关更多信息,请参阅 Linux 上的 SQL Server 2017 的版本和支持功能

所需的 IAM 权限

运行 Automation 工作流程的用户必须拥有以下权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeImages", "ec2:RunInstances", "ec2:CreateTags", "ec2:DescribeInstances", "ec2:DescribeInstanceStatus", "ec2:RebootInstances", "ssm:SendCommand", "ssm:GetAutomationExecution", "ssm:ListCommands", "ssm:StartAutomationExecution", "ssm:DescribeInstanceInformation", "ssm:ListCommandInvocations", "iam:PassRole" ], "Resource": "*" } ] }

参数

  • S3Input

    类型:字符串

    说明:(必需)包含要还原的 SQL 备份文件的 S3 存储桶名称、S3 对象键的逗号分隔列表或预签名的 S3 URL 的逗号分隔列表。

  • IsS3PresignedUrl

    类型:字符串

    说明:(可选)如果 S3Input 是预签名 S3 URL,表示“yes”。

    默认值:“No”

    允许的值:“yes”、“no”

  • 实例 ID

    类型:字符串

    说明:(可选)Linux 上的运行 SQL Server 2017 的实例。如果未提供 InstanceId,自动化将使用提供的 InstanceType 和 SQLServerEdition 自动化启动新 Amazon EC2 实例。

  • InstanceType

    类型:字符串

    说明:(可选)要启动的 EC2 实例的实例类型。

  • SQLServerEdition

    类型:字符串

    说明:(可选)要安装在新创建的 EC2 实例上的 SQL Server 2017 版本。

    允许的值:“Standard”、“Enterprise”、“Web”、“Express”

  • SubnetId

    类型:字符串

    说明:(可选)要在其中启动新 EC2 实例的子网。子网必须具有与 AWS 服务的出站连接。如果未提供 SubnetId 值,自动化将使用默认子网。

  • IamInstanceProfileName

    类型:字符串

    说明:(可选)要附加到新 EC2 实例的 IAM 实例配置文件。IAM 实例配置文件必须附加了 AmazonEC2RoleForSSM 托管策略。

  • DataDirectorySize

    类型:字符串

    说明:(可选)所需的新 EC2 实例的 SQL Server 数据目录的卷大小 (GiB)。

    默认值:100

  • LogDirectorySize

    类型:字符串

    说明:(可选)所需的新 EC2 实例的 SQL Server 日志目录的卷大小 (GiB)。

    默认值:100

  • TempDbDirectorySize

    类型:字符串

    说明:(可选)所需的新 EC2 实例的 SQL Server TempDB 目录的卷大小 (GiB)。

    默认值:100

  • DatabaseNames

    类型:字符串

    说明:(可选)要还原的数据库的名称的逗号分隔列表。

  • KeyPair

    类型:字符串

    说明:(可选)要在创建新 EC2 实例时使用的密钥对。

示例

使用现有的具有两个数据库的 EC2 实例启动自动化。

aws ssm start-automation-execution --document-name AWSEC2-RestoreSQLServer --parameters "InstanceId='i-1234567890abcdef0',S3Input='sample-bucket/sample-prefix',DatabaseNames='sample-database1, sample-database2'"

使用指定的 SQL Server 版本启动自动化并启动新 EC2 实例。

aws ssm start-automation-execution --document-name AWSEC2-RestoreSQLServer --parameters "InstanceType='m4.large',SQLServerEdition='Standard',S3Input='sample-bucket/sample-backup-1.bak, sample-bucket/sample-backup-2.bak',IamInstanceProfileName='sample-profile-name',KeyPair='sample-keypair-name'"

使用预签名 S3 URL 通过指定的 SQL Server 版本启动自动化并启动新 EC2 实例。

aws ssm start-automation-execution --document-name AWSEC2-RestoreSQLServer --parameters "InstanceType='m4.large',SQLServerEdition='Standard',S3Input='https://sample-bucket.s3.amazonaws.com/sample-backup.bak?abcdefg',IsS3PresignedUrl='yes',IamInstanceProfileName='sample-profile-name',DataDirectorySize=200,LogDirectorySize=100,TempDbDirectorySize=200"

检索执行输出。

aws ssm get-automation-execution --automation-execution-id ExecutionID --output text --query 'AutomationExecution.Output'

文档步骤

对于新 EC2 实例:

  1. aws:executeAwsApi - 在 Ubuntu 16.04 上检索 SQL Server 2017 的 AMI ID。

  2. aws:runInstances - 启动新 EC2 Linux 实例。

  3. aws:runInstances - 等待新创建的 EC2 实例准备就绪。

  4. aws:executeAwsApi - 如果实例未准备就绪,将重启实例。

  5. aws:assertAwsResourceProperty - 验证 SSM 代理 是否已安装。

  6. aws:runCommand - 在 Powershell 中运行 SQL Server 还原脚本。

对于现有 EC2 实例:

  1. aws:waitForAwsResourceProperty - 验证 EC2 实例是否准备就绪。

  2. aws:executeAwsApi - 如果实例未准备就绪,将重启实例。

  3. aws:assertAwsResourceProperty - 验证 SSM 代理 是否已安装。

  4. aws:runCommand - 在 Powershell 中运行 SQL Server 还原脚本。

输出

getInstance.InstanceId

restoreToNewInstance.Output

restoreToExistingInstance.Output