AWS RDS Aurora 集群启用加密

Sur*_*orX 2 encryption amazon-web-services amazon-rds amazon-aurora

我有一个 AWS RDS Aurora PostgreSQL 集群,其中包含四个实例,并在生产中提供多可用区部署。此集群上尚未启用静态加密。现在我必须在这个现有集群上启用加密。AWS 文档建议我创建该集群的快照,然后在启用加密的情况下再次恢复该集群。参考:这里

由于我的集群正在生产中运行,因此我不能接受任何停机或 I/O 暂停。在计划加密现有集群之前,我希望回答以下一些问题:

  1. 假设有大量数据并且快照需要时间,在创建快照期间是否会出现任何停机时间。
  2. 在创建快照期间写入数据库的新数据怎么样?快照创建是实时的还是在拍摄快照之前我会丢失新数据?
  3. 这是我在生产集群上启用加密的唯一方法吗?因为我知道这会导致一些数据库中断。

Hos*_*nsy 5

有一种方法可以使用 PostgreSQL 兼容集群来加密您的 AWS RDS Amazon Aurora,并且无需停机或停机时间最短,但这需要一些努力。

您需要执行以下步骤:

  1. 对于源数据库,您必须拍摄快照。
  2. 然后复制该快照,然后检查Enable Encryption并选择Default Encryption Key或选择您的Custom AWS KMS CMK,现在您拥有数据库快照的加密副本。
  3. Restore将此加密快照添加到新的数据库实例中,您可以立即启用Multi-AZ并添加Read Replicas或在迁移后修改它们。
  4. 现在您有两个数据库实例EncryptedUnencrypted,但数据不匹配,因为它是生产数据库。
  5. 我们将使用AWS DMS来进行数据的同步复制,或者您可以使用带有Aurora的PostgreSQL逻辑复制来代替AWS DMS,这样会更好,两者都可以。
  6. 转到 AWS DMS 控制台,创建 AWS DMS 任务。
  7. 对于迁移类型,选择Migrate existing data and replicate ongoing changes
  8. 对于目标表准备模式,选择Truncate
  9. awsdms_status如果您想要验证复制状态,请在“高级任务设置”下启用该表。
  10. 运行迁移任务并等待所有记录更新。然后,AWS DMS 将确定要迁移的数据的大小。
  11. 然后,您需要验证迁移后的数据库实例中的数据Encrypted与数据库实例中的数据是否相同Unencrypted
  12. 通过检查迁移任务和 .检查 AWS DMS 中的复制状态awsdms_status
  13. 您现在可以将流量路由到新端点。
  14. 为了实现平滑切换,请使用 Amazon Route 53 通过将 DNS TTL 更改为短值来路由流量,并最终替换 Route 53 中的终端节点名称。

现在回答您的问题,

  1. 假设有大量数据并且快照需要时间,在创建快照期间是否会出现任何停机时间。

根据您的集群设置,您正在运行多可用区部署,自动备份和数据库快照只是从备用数据库中获取,以避免主数据库上的 I/O 暂停。请注意,在单可用区和多可用区部署的备份期间,您可能会遇到 I/O 延迟增加(通常持续几分钟)的情况。

  1. 在创建快照期间写入数据库的新数据怎么样?快照创建是实时的还是在拍摄快照之前我会丢失新数据?

您将丢失拍摄快照后写入的数据,因此您将使用 AWS DMS 将同步数据复制到加密的数据库实例。

  1. 这是我在生产集群上启用加密的唯一方法吗?因为我知道这会导致一些数据库中断。

是的,这是唯一的方法,但不会导致停机或停机时间很少。