Amazon web services 如何备份AWS Elasticache Redis数据?

Amazon web services 如何备份AWS Elasticache Redis数据?,amazon-web-services,redis,amazon-elasticache,Amazon Web Services,Redis,Amazon Elasticache,我正在AWS Elasticache Redis中测试一个新的Redis集群(AWS大型主/从节点) 如何从Redis群集备份或导出数据 其他托管的redis服务会自动创建redis RDB转储文件并将其存储在S3上。我想用ElastiCache做一些类似的事情。编辑:自2014年4月24日起的新AWS功能 这允许您每天快照redis数据并将其恢复到ElastiCache群集。目前不允许导出/下载。如果您想保留自己的redis数据存档/备份,仍然需要以下解决方案 大多数人应该能够使用现有的内置备

我正在AWS Elasticache Redis中测试一个新的Redis集群(AWS大型主/从节点)

如何从Redis群集备份或导出数据


其他托管的redis服务会自动创建redis RDB转储文件并将其存储在S3上。我想用ElastiCache做一些类似的事情。

编辑:自2014年4月24日起的新AWS功能

这允许您每天快照redis数据并将其恢复到ElastiCache群集。目前不允许导出/下载。如果您想保留自己的redis数据存档/备份,仍然需要以下解决方案

大多数人应该能够使用现有的内置备份系统

原始答案

看起来要做到这一点,唯一的方法是执行以下操作

  • 启动新的EC2实例
  • 安装Redis
  • 配置连接到ElastiCache redis primary的本地副本
  • 等待数据在本地同步
  • 发出redis
    SAVE
    命令以生成本地转储
  • 在S3上存档本地
    dump.rdb
我想要一个更简单的解决方案或是ElastiCache内置的东西

编辑:精化

最后,我使用Ruby gem/实用程序“redis backup”(redis backup)和运行以下shell命令的crontab实际构建了它:

sudo -u redis /usr/bin/env S3_SAVE=true redis-backup -s /var/lib/redis/dump.rdb -B YOUR_S3_BUCKET_FOR_BACKUPS -A S3_ACCESS_KEY_ID -S S3_ACCESS_SECRET_KEY

看起来这已经不可能了。根据AWS文件


“从Redis 2.8.22开始,ElastiCache不再支持外部读取副本。”

ElastiCache可以禁用
save
bgsave
等命令。作为参考,请检查

下面的bash脚本解决方案支持数据类型string和hash。如果希望支持其他数据类型(例如,集合、列表、排序集合、位图),则必须扩展脚本(如脚本中的注释)

#/bin/bash
#如果您想要redis缓存中的密钥子集,请相应地更改密钥模式
按键模式=“*”
#如果不从命令行/环境提供默认的redis url,请在此处提供该url:
如果[-z$REDIS_SERVICE_URL]];然后
REDIS\u服务\u URL=redis://localhost:6379
fi
如果=“”
iKey=0#对键进行迭代的计数器
回音{
#遍历redis中的键:
边读边做
如果[$iKey-gt 0];则
回声“
fi
回显“$key\”:
#获取当前密钥的数据类型
数据类型=$(redis cli-u“$redis\u服务\u URL”类型“$key”)
#此脚本支持字符串/哈希数据类型。
#如果要支持其他数据类型,请扩展。
如果[“$datatype”=“string”];则
val=$(redis cli-u“$redis\u服务\u URL”获取“$key”)
echo-n\“${val/\“/\\\\”}”
elif[“$datatype”='hash'];然后
回音[
i=0
边读边做
如果[$i-gt 0];则
回声“
fi
echo \“${val/\”/\\“}\”
i=$((i+1))

完成升级后,此自动备份会产生额外费用吗?似乎每天都在使用
{
    "vlaue-key-1": "value-1",
    "hash-key-1": [
        "key-a",
        "value of key-a in hash-key-1",
        "key-b",
        "20"
    ],
    "vlaue-key-2": "25.5",
    "hash-key-2": [
        "key-x",
        "value-x of hash-key-2/key-x",
        "key-b",
        "9999"
    ]
}