从表中备份dynamodb并还原到新表

时间:2018-08-06 07:02:52

标签: amazon-web-services amazon-dynamodb database-administration

我正在寻找一种在dynamoDB中执行以下步骤的方法:

  
      
  1. 备份/fetch/user
  2.   
  3. 删除const model = require("./index");
  4.   
  5. 创建一个名为app.get('/fetch/:collection', function (req, res){ model[req.params.collection].find({}, function(err, docs){ res.json(docs) // All user data. }) }) 的新表
  6.   
  7. 用步骤的备份填充新表。 1
  8.   

此任务的目的是我需要更改table_A的{​​{1}}(本地二级索引),更改它的唯一方法是创建一个新表。对?我还需要保留数据(不超过几MB)

那么有可能做#3和#4吗?还是对这件事有更好的方法?如果此表已投入生产,什么是合理的方法?

预先感谢

1 个答案:

答案 0 :(得分:1)

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/backuprestore_HowItWorks.html

  

连同数据一起,还包括以下内容(不能   排除):

     
      
  • 全球二级索引(GSI)
  •   
  • 本地二级索引(LSI)
  •   
  •   
  • 提供的读写容量
  •   

这是我以前使用的一种方法:

  1. 备份table_A(以防万一出现问题)
  2. 使用数据管道提取DynamoDB表中的数据并将其放入S3
  3. 使用LSI table_B
  4. 创建一个新表
  5. 使用数据管道将数据从S3加载到table_B
  6. 检查一切正常。备份table_B
  7. 删除table_A。重新创建它。使用数据管道加载数据

https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-importexport-ddb.html

就可用性和日志记录而言,数据管道非常垃圾,但是它工作得很好。