Azure Cache for Redis 导入和导出功能以 Redis 数据库(RDB)快照的形式导入或从 Azure Redis 缓存实例导入或导出数据。 快照是使用 Azure 存储帐户中的 Blob 导入或导出的。
可以使用 Azure Redis 导入和导出功能进行数据管理、在不同缓存实例之间迁移,或者在使用前使用数据填充缓存。 本文介绍如何在 Azure Redis 中导入和导出数据,并回答常见问题。
层 | 基本、标准 | 高级 |
---|---|---|
可用 | 否 | 是 |
高级层支持导入和导出。
进口
- 可以从页 Blob 或块 Blob 导入 RDB 快照。
导出
- 可以将您的快照导出为高级层中的 RDB 页面 Blob。
- Blob 存储帐户不支持导出。
版本
- Redis 4.0 缓存支持 RDB 版本 8 及更低版本。 Redis 6.0 缓存支持 RDB 版本 9 及更低版本。
- 无法将导出的备份从较新的 Redis 版本(如 Redis 6.0)导入到旧版本(如 Redis 4.0) 中。
- Azure Cache for Redis 中的高级层缓存。
- 若要导入文件,RDB 文件或文件应上传到 Azure 存储中的页或块 Blob,与 Azure Redis 缓存位于同一区域和订阅中。
注意
如果将托管标识用于存储帐户身份验证,则存储帐户可以位于其他订阅中。
可以使用导入从任何云或环境中运行的任何 Redis 服务器(包括 Linux、Windows 或其他云提供商(如 Amazon Web Services)引入与 Redis 兼容的 RDB 文件。 导入数据是使用预先填充的数据创建缓存的一种简单方式。
在导入过程中,Azure Redis 将 RDB 文件从 Azure 存储加载到内存中,然后将密钥插入缓存中。
重要
导入数据会删除预先存在的缓存数据,在导入过程中缓存客户端无法访问缓存。
注意
在导入之前,请确保 RDB 文件或文件已上传到 Azure 存储中的页或块 Blob 中。 如果首先遵循 导出 过程,则 RDB 文件已存储在页 Blob 中,并且已准备好导入。
若要导入一个或多个缓存 Blob,请在 Azure 门户的 Redis 缓存页上,在左侧导航菜单上的“管理”下选择“导入数据”。
在 “导入数据”页上,选择 身份验证方法,然后选择 选择 Blob 对象。
在 “存储帐户 ”页上,选择要导入数据的存储帐户。
在 “容器 ”页上,选择要导入的存储帐户中的容器。
在容器页上,选中要导入的一个或多个 Blob 旁边的复选框,然后选择“ 选择”。
在 “导入数据 ”页上,选择“ 导入 ”以开始导入过程。
可以通过遵循 Azure 门户的通知或在 活动日志中查看事件来监视导入进度。
导出过程将 Azure Redis 缓存中存储的数据导出到 RDB 文件。 可以使用此功能将数据从一个 Azure Redis 缓存或服务器移到另一个缓存。
在导出过程中,会在托管 Azure Redis 服务器实例的虚拟机上创建一个临时文件。 然后,该文件将上传到所选存储帐户。 当导出作成功完成或失败时,将删除临时文件。
重要
- Azure Redis 不支持导出到 Azure Data Lake Storage Gen2 存储帐户。
- Blob 存储帐户不支持 Azure Redis 导出。
如果导出到启用了防火墙的存储帐户失败,请参阅 如果我在存储帐户上启用了防火墙,该怎么办? 有关详细信息,请参阅 Azure 存储帐户概述。
若要将缓存的当前内容导出到存储,请在 Azure 门户中的 Redis 缓存页上,在左侧导航菜单上的“管理”下选择“导出数据”。
在导出数据页面上,对于Blob 名称前缀,输入此导出操作生成文件的名称前缀。 选择 身份验证方法,然后选择“ 选择存储容器”。
在 “存储帐户 ”页上,选择要导出数据的存储帐户。
在 “容器 ”页上,如果要为导出创建新容器,请选择 “容器”,然后在“ 新建容器 ”页上输入容器的名称,然后选择“ 创建”。 否则,请选择要使用的现有容器。
在“ 容器 ”页上,选择要用于导出的容器,然后选择“ 选择”。
在“ 导出数据 ”页上,选择“ 导出”。
可以通过遵循 Azure 门户的通知或在 活动日志中查看事件来监视导出作的进度。 在导出过程中,缓存仍可供使用。
本部分包含有关导入和导出功能的常见问题。
- 是否可以使用 Azure PowerShell 或 Azure CLI 自动执行导入导出?
- 能否从任何 Redis 服务器导入数据?
- 我能否通过一个与缓存不同的订阅中的存储帐户导入或导出数据?
- 是否可以将导入-导出与 Redis 群集配合使用?
- 导入-导出如何与自定义数据库设置结合使用?
- 导入-导出与 Redis 数据暂留有何不同?
- 在导入导出作期间,缓存是否可用?
- 如果我在存储帐户上启用了防火墙,该怎么办?
- 可以导入哪些 RDB 版本?
- 哪些 Azure Redis 层支持导入-导出?
- 存储帐户容器共享访问签名(SAS)令牌需要允许导出哪些权限?
- 将数据导出到 Azure Blob 存储时为何遇到错误?
导入和导出功能仅在高级层中可用。
是的,可以导入从 Azure Redis 实例导出的数据。 可以从任何云或环境中运行的任何 Redis 服务器(包括 Linux、Windows 或其他云提供商(如 Amazon Web Services)导入 RDB 文件。
若要导入此数据,请将 RDB 文件从 Redis 服务器上传到 Azure 存储帐户中的页或块 Blob。 然后将其导入 Azure Redis 缓存实例。
例如,你可能想要从生产缓存导出数据,然后将其导入到过渡环境一部分的缓存中,以便进行测试或迁移。
重要
若要成功导入从非 Azure Redis 服务器导出的页 Blob 数据,页 Blob 大小必须在 512 字节边界上对齐。 有关用于执行任何所需的字节填充的示例代码,请参阅示例页 blob 上传。
有关支持的用于导入的 RDB 版本的详细信息,请参阅 兼容性。
- 缓存在 导出期间仍可用,您可以在导出操作期间继续使用缓存。
- 当导入作启动时,缓存变得不可用,并在导入作完成时再次可用。
是的,可以在群集缓存和非聚集缓存之间导入和导出。 由于 Redis 群集仅支持数据库 0,因此将不会导入 0 以外的数据库中的任何数据。 导入群集缓存数据时,密钥会在群集的分片之间重新分发。
某些定价层具有不同的 数据库限制。 如果在创建缓存期间为 databases
设置配置了自定义值,则导入时需要考虑一些事项。
导入到的定价层 databases
限制低于从中导出的层时:
- 如果使用默认数目
databases
(对于所有定价层为 16),则不会丢失任何数据。 - 如果使用的
databases
自定义数目在要导入到的层的限制内,则不会丢失任何数据。 - 如果导出的数据来自超出新层限制的数据库,则不会导入来自多余的数据库的数据。
Azure Redis 缓存数据持久性功能主要用于数据耐久性,而导入导出功能旨在进行定期数据备份以实现时间点恢复(PITR)。
配置数据持久性时,缓存会根据可配置的备份频率将数据快照保存到磁盘。 数据以 Redis 专有的二进制格式写入。
在高级层上,数据持久性文件存储在 Azure 存储中,但无法将文件导入到其他缓存中。
如果灾难性事件同时禁用主缓存和副本缓存,则会使用最新的快照自动还原持久缓存数据。 数据持久性专为灾难恢复而设计,不用作 PITR 机制。
若要对 PITR 进行定期数据备份,请使用导入-导出功能。 有关详细信息,请参阅如何为 Azure Cache for Redis 配置数据暂留。
是的。 有关高级层,请参阅以下内容:
- 使用 Azure PowerShell 导入高级 Azure Redis 缓存
- 使用 Azure PowerShell 导出高级 Azure Redis 缓存
- 使用 Azure CLI 导入高级 Azure Redis 缓存
- 使用 Azure CLI 导出高级 Azure Redis 缓存
导出仅适用于以页 blob 形式存储的 RDB 文件。 不支持其他 Blob 类型,包括具有热层和冷层的 Blob 存储帐户。 有关详细信息,请参阅 Azure 存储帐户概述。
如果使用访问密钥对存储帐户进行身份验证,则存储帐户上的防火墙例外可能会导致导入-导出过程失败。
对于高级层实例,必须在 受信任的服务列表中选择“允许 Azure 服务”,才能在存储帐户设置中访问此存储帐户 。 然后使用系统分配或用户分配的托管标识,并为该对象 ID 预配“存储 Blob 数据参与者”基于角色的访问控制 (RBAC) 角色。 有关详细信息,请参阅 存储帐户的托管标识。
在高级层中,如果使用 托管标识 作为身份验证方法,则可以从与缓存不同的订阅中的存储帐户导入和导出数据。 配置导入或导出时,需要选择保留存储帐户的订阅。
若要成功导出到 Azure 存储帐户, 共享访问签名 (SAS) 令牌 必须具有以下权限:
read
add
create
write
delete
tag
move