繁体   English   中英

RDS快照可以跨AWS账户传输吗?

[英]Can RDS snapshots be transferred across AWS accounts?

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

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

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

我特别关注Snapshot对象中是否存在任何特定于帐户的详细信息,或者是否会阻止该数据跨帐户移动的cmdlet的处理。 如果存在一个问题,我会使用比PowerShell更通用的解决方案。

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 DB
  • 将适当的数据库管理工具安装到PC上,并为该PC网络提供对两个RDS实例的访问(安全组和数据库用户访问以进行读写)
  • 使用数据库管理工具将数据从一个DB复制到另一个DB

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM