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 之间进行数据传输是免费的。