如何在已有数据的DynamoDB表上创建2017.11.29版本全局表副本
已有数据DynamoDB表创建2017.11.29版本全局表副本方案
- 第一步:全量导出原表数据
使用DynamoDB原生导出功能将现有存量表的全量数据导出到S3存储桶,导出时保留所有原始字段与元数据,不要配置过滤规则。 - 第二步:创建空的符合版本要求的全局表
创建新的DynamoDB全局表,所有区域的副本统一选择2017.11.29版本的全局表配置,保证aws:rep:updateregion字段正常生成。新表的主键、二级索引、读写容量模式等配置必须和原有存量表完全一致。 - 第三步:导入历史数据到新全局表
将S3中存储的历史数据通过DynamoDB批量导入功能写入新全局表的主区域,全局表会自动将写入的全量数据同步到其他区域的副本,同步过程生成的所有变更记录都会自带aws:rep:updateregion标识字段。 - 第四步:流量切换
全量导入完成后做跨区域数据一致性校验,确认所有数据同步无误后,将业务侧的读写请求逐步切到新的全局表,下线原有存量表即可。
低迁移成本替代方案
如果业务无法承受全量数据迁移的停服或耗时成本,可以无需依赖aws:rep:updateregion字段,通过自定义逻辑实现区分:
本地区域写入DynamoDB时主动添加自定义字段write_region,填充当前写入的区域代码。Lambda处理流变更时,直接比对write_region字段值和Lambda运行环境自带的AWS_REGION环境变量:
- 二者一致为本地业务写入的更新
- 二者不一致为全局表跨区域同步的更新
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

