9

自从回答了这个问题以来,AWS Tools for Powershell 已经发布,我基本上遇到了同样的问题:我在一个 AWS 账户上有一个 RDS 快照,我想转移到另一个账户。

到目前为止,我已经能够使用Get-RDSDBSnapshotcmdlet 选择我想要的快照,并且我想获取该Amazon.RDS.Model.DBSnapshot对象并在另一个帐户中使用它。

我一直在环顾四周,我认为Restore-RDSDBInstanceFromDBSnapshotcmdlet(映射到rds-restore-db-instance-from-db-snapshot)可能是我正在寻找的东西,但我不确定我是否理解它的行为——可以使用此 cmdlet 从我的第一个帐户获取我的快照,并将其还原到第二个帐户中的实例吗?

我特别担心快照对象中是否有任何帐户特定的详细信息或 cmdlet 的处理会阻止该数据跨帐户移动。如果存在比 powershell 更通用的解决方案,我可以接受。

4

2 回答 2

14

2015 年 10 月 29 日更新:

自从我最初发布(公告链接)以来,AWS 已经添加了对这个功能的原生支持。这支持未加密的 MySQL、Oracle、SQL Server 和 PostgreSQL。

您可以选择公开或私下共享您的 RDS 快照(通过管理具有查看快照权限的特定 AWS 账户 ID)。默认情况下,快照最多可以与 20 个帐户私下共享。

这可以通过单击“快照(左侧导航栏)> 共享快照(顶部工具栏)”从 RDS 控制台进行管理,这将引导您进入以下 UI:

在此处输入图像描述

这在 RDS API 和 CLI 中也可用。


原答案:

我也将其发布到 AWS 开发人员论坛,并得到了PhilP@AWS 的回复。通过 powershell 或任何其他方式,我们似乎根本无法做到这一点。不过,他确实有一些替代建议:

无法直接将 RDS 快照从一个帐户共享到另一个帐户。但是我可以在这里提出一些建议(取决于您当前的配置):

如果您的 RDS 实例可公开访问:

  • 在您的第二个帐户上启动新的 RDS 数据库
  • 在 PC 上安装适当的 DB 管理工具,并授予这台 PC 对两个 RDS 实例的网络访问权限(安全组和 DB 用户访问权限以进行读写)
  • 使用数据库管理工具将数据从一个 DB 复制到另一个 DB

通过 EC2 实例作为中介复制数据:

  • 启动配置了适当的数据库服务器软件的 EC2 实例
  • 将 RDS 数据库数据从您的 RDS 实例复制到您的 EC2 实例
  • 然后将您的新 RDS 实例启动到第二个账户
  • 配置适当的访问权限(安全组和数据库用户的读写权限)
  • 将数据库数据从 EC2 实例复制到新创建的 RDS 实例

我的 RDS 实例不可公开访问,在他的建议中,EC2 解决方案更可取。根据服务器故障解决方案,我们可以交替使用 mysqldump。

编辑:我想更新我已经成功实施 EC2 中介建议。这可以通过多种方式实现自动化,但我选择的解决方案涉及将 bash 脚本作为用户数据传递给(linux AMI)EC2 实例,并且数据传输的细节在脚本中处理。

该解决方案最终具有相当的成本效益,但需要注意的是您希望 RDS 实例和 EC2 实例位于同一可用区中。这在很大程度上是因为使用私有 IP 地址在同一可用区中的 RDS-EC2 之间进行数据传输是免费的。

于 2013-08-13T02:49:02.363 回答
0

亚马逊终于使这成为可能。您可以使用 Edit-RDSDBSnapshotAttribute cmdlet(此处的示例)与另一个帐户共享快照,然后可以使用 Restore-RDSDBInstanceFromDBSnapshot cmdlet 将其还原到与快照共享的帐户。

您现在甚至可以共享加密快照。这是关于如何做到这一点的一个很好的演练。

于 2016-03-12T17:33:46.307 回答