当前位置: 首页 > news >正文

将AWS RDS MySQL实例从存储未加密改为加密的方案

问题描述:

因为AWS RDS官方文档【1】中已经明确说明,MySQL RDS的存储为EBS卷,用KMS进行RDS加密有如下限制:

您只能在创建RDS的时候,选择加密。对于已经创建的RDS实例,您无法将为加密的实例,直接改为加密实例。(文档【1】中的Amazon RDS 加密的数据库实例的限制部分)

因此,对于一个我们已经创建并运行的实例,我们无法将其从未加密的状态,直接改为加密状态。

那么如果我的数据较多,或者我的生产环境过于忙碌,我也并不想通过mysqldump这类,需要很长的停机时间才能够迁移全部数据的方式,将数据从未加密的实例迁移到加密实例。

我有哪些方案可以选择呢?

分析过程 及 方案建议:

1. 我们可以为RDS MySQL创建一个Aurora MySQL 集群的只读副本。因为我们可以在创建Aurora集群的只读副本的的时候,将“启用加密”的选项选择上。等到Aurora副本和primary的MySQL RDS latency为0以后,promote Aurora cluster副本,并修改application connection string。

文档【2】对这个方式提供了理论支撑:如果 MySQL 数据库实例未加密,请指定一个加密密钥来对数据库集群进行静态加密。我也进行了测试,未加密的RDS MySQL是可以创建加密的Aurora cluster的。

2. 如果我们并不希望通过建Aurora副本的方式,而希望继续使用RDS MySQL。
那么我们可以通过如下的步骤,建立一个加密的RDS MySQL实例,在这之后建立源库和新库之间的主从,步骤如下:

我们可以通过您的未加密的RDS实例,记录binlog position, 之后创建一个未加密的快照。之后,选定此快照,通过复制(copy)的方式,复制一个快照的副本【3】,而copy的过程中,我们可以选定KMS加密并选定使用加密的key。这样创建的新的快照,便是加密的快照。之后,我们可以用这个快照恢复成一个新的RDS,这个新的RDS,即为加密RDS。这个过程也在文档【1】中有所提及。

等到snapshot还原RDS B完成以后,我们可以通过用mysql.rds_set_external_source这个存储过程【4】,将源RDS设为Primary,并同步这段时间Primary写入的数据,之后在同步完成以后,promote已经加密的新库并更改endpoint.

过程描述:
未加密的实例A --> 未加密的实例快照A snapshot -- > 通过copy,成为加密快照Encrypted Snapshot B -->  Snapshot B还原为加密的RDS B. --> 用primary replica连结A和B.

3. 另一种方式是,我们创建一个新的RDS,并在创建RDS的过程中,选择加密RDS的存储。
在创建出新的加密RDS以后,我们可以使用Database Migration Service【5】服务,创建一个fullload + CDC,全量+持续复制任务,指定我们的未加密的RDS为源,已经加密的新的RDS为目标端。将我们的未加密的RDS中的数据,全部迁移到已经加密的新的RDS中。

请注意,DMS服务并不会迁移MySQL数据库的所有架构。我们可能需要mysqldump metadata only的方式迁移view, function, procedure,trigger等DDL。

过程描述:
未加密的实例A 为源端 ---> DMS 任务 --> 加密的实例B为目标

在迁移完以后,我们可以选择改变业务应用中的RDS 连结,选择新的加密的RDS进行应用。或者,我们可以更换RDS 实例ID,重命名原RDS,并将新的已经加密的RDS改为原RDS ID。然后重新进行应用的连结。

参考文档:
【1】加密RDS实例, 以及Amazon RDS 加密的数据库实例的限制:
https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/Overview.Encryption.html    
【2】Aurora只读副本加密:https://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Migrating.RDSMySQL.Replica.html 
【3】复制RDS快照:https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/USER_CopySnapshot.html  
【4】mysql.rds_set_external_source: https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/mysql_rds_set_external_source.html 
【5】Databse Migration Service介绍:https://docs.amazonaws.cn/dms/latest/userguide/Welcome.html    

http://www.lryc.cn/news/404590.html

相关文章:

  • nginx的配置:TLSv1 TLSv1.1 被暴露不安全
  • 揭开黑箱:目标检测中可解释性的重要性与实现
  • Mysql高价语句
  • ArcGIS Pro SDK (九)几何 6 包络
  • 单链表<数据结构 C版>
  • 监控电脑进程,避免程序在打开前就已经在运行
  • 【MySQL进阶篇】存储对象:视图、存储过程及触发器
  • 算法day05 master公式估算递归时间复杂度 归并排序 小和问题 堆排序
  • 基于jeecgboot-vue3的Flowable流程仿钉钉流程设计器-支持VForm3表单的选择与支持
  • 【刷题汇总 -- 压缩字符串(一)、chika和蜜柑、 01背包】
  • 《Exploring Aligned Complementary Image Pair for Blind Motion Deblurring》
  • vue2学习笔记9 - 通过观察vue实例中的data,理解Vue中的数据代理
  • 04 Git与远程仓库
  • 数据库之表的查询
  • String 和StringBuilder字符串操作快慢的举例比较
  • Java代码基础算法练习-竞猜卡片值-2024.07.22
  • Python爬虫-淘宝搜索热词数据
  • Leetcode二分搜索法浅析
  • 昇思25天学习打卡营第24天|ResNet50迁移学习
  • Shell 构建flutter + Navtive 生成IPA
  • python gradio 的输出展示组件
  • SwiftUI 6.0(Xcode 16)新 PreviewModifier 协议让预览调试如虎添翼
  • STM32被拔网线 LWIP的TCP无法重连解决方案
  • Linux下开放指定端口
  • 亚马逊测评行为的识别与防范:教你如何搭建安全的测评环境
  • 如何通过成熟的外发平台,实现文档安全外发管理?
  • SCI一区级 | Matlab实现SSA-CNN-GRU-Multihead-Attention多变量时间序列预测
  • Mysql中的几种常见日志
  • 2024年7月22日(nfs samba)
  • 黑龙江网络安全等级保护测评策略概述