AWS RDS Aurora 集群启用加密

AWS RDS Aurora cluster enable encryption

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

因为我的集群正在生产中服务,所以我可以接受没有停机或 I/O 暂停。在我计划加密现有集群之前,我希望得到以下一些问题的解答:

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

有一种方法可以加密您的 AWS RDS Amazon Aurora with PostgreSQL compatibility Cluster,无需停机或停机时间最短,但这需要一些努力。

您需要进行以下操作:

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

现在回答你的问题,

  1. Is there any downtime during the creation of the snapshot assuming there is a lot of data and a snapshot will take time.

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

  1. What about the new data that is being written on to the database during the snapshot creation? Is the snapshot creation real-time or I will lose my new data during the time till the snapshot is being taken?

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

  1. Is this the only way for me to enable encryption on the production cluster knowing that it will result in some database outage?

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