你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 托管 Redis(预览版)中导入和导出数据
使用 Azure 托管 Cache 中的导入和导出功能作为数据管理操作。 使用 Redis 数据库 (RDB) 快照将数据导入缓存实例或从缓存实例导出数据。 快照是使用 Azure 存储帐户中的 Blob 导入或导出的。
- 导出 - 可以将 Azure 托管 Redis RDB 快照导出到块 Blob。
- 导入 - 可以从页 Blob 或块 Blob 导入 Azure 托管 Redis RDB 快照。
可以使用导入/导出在不同的 Azure 托管 Cache 实例之间进行迁移,或者在使用之前使用数据填充缓存。 还可以从较旧的 Azure Cache for Redis 实例导出数据,将数据迁移到 Azure 托管 Redis 实例。
本文提供了使用 Azure 托管 Redis 导入和导出数据的相关指南,并提供了常见问题解答。
可用范围
层 | 内存优化,均衡,计算优化 | 闪存优化 |
---|---|---|
可用 | 是 | 是 |
兼容性
- 数据导出为 .gz 块 blob。
- 运行 Redis 7.2 的实例支持 RDB 版本 11 及更低版本。
- 从较新版本的 Redis(例如 Redis 7.2)导出的备份无法导入到较旧版本的 Redis(例如 Redis 6.0)
- 可将 Premium 层 Azure Cache for Redis 实例中的 RDB 文件导入 Azure 托管 Redis,但反之则不行。
- 可将 Enterprise 或 Enterprise Flash 层 Azure Cache for Redis 实例中的 RDB 文件导入 Azure 托管 Redis。 如果 Enterprise 层缓存运行相同的 Redis 版本(例如 Redis 7.2),则可以将 Azure 托管 Redis 中的 RDB 文件导入回这些层
Import
使用导入可从任何云或环境中运行的任何 Redis 服务器(包括 Linux、Windows 或者 Amazon Web Services 等任何云平台中运行的 Redis)引入与 Redis 兼容的 RDB 文件。 导入数据是使用预先填充的数据创建缓存的一种简单方式。 在导入过程中,Azure 托管 Redis 会将 Azure 存储中的 RDB 文件加载到内存中,再将密钥插入到缓存中。
注意
在开始导入操作之前,请确保 Redis 数据库 (RDB) 文件已上传到 Azure 存储的页 blob 或块 blob 中,并与 Azure 托管 Redis 实例在同一区域和订阅中。 如果使用托管标识进行身份验证,则存储帐户可以位于不同的订阅中。 有关详细信息,请参阅 Azure Blob 存储入门。 如果已使用 Azure Cache for Redis 导出功能导出 RDB 文件,则 RDB 文件已存储在块 blob 中并可供导入。
若要导入一个或多个导出的缓存 Blob,请在 Azure 门户中浏览到你的缓存,然后在“资源”菜单中选择“导入数据” 。 在工作窗格中,可以看到“选择 Blob”,你可以在其中找到 RDB 文件。
选择“选择 Blob”,然后选择包含要导入的数据的存储帐户。
选择包含要导入的数据的容器。
通过选择 Blob 名称左侧的区域选择要导入的一个或多个 Blob,然后选择“选择”。
选择“导入”开始导入过程。
重要
在导入过程中,缓存客户端无法访问该缓存,并且将删除该缓存中的任何现有数据。
可以通过关注 Azure 门户中的通知或通过查看活动日志中的事件,来监视导入操作的进度。
重要
Azure 托管 Redis 中尚未提供活动日志支持。
导出
“导出”使你可以导出 Azure 托管 Redis 中存储的数据。 可以使用此功能将一个 Azure 托管 Redis 实例中的数据移到另一个 Azure 托管 Redis 实例或另一个 Redis 服务器。 在导出过程中,会在托管 Azure 托管 Redis 服务器实例的 VM 上创建临时文件。 然后,该文件将上传到所选的存储帐户。 导出操作完成后,无论状态为成功还是失败,都会删除临时文件。
若要将缓存的当前内容导出到存储,请在 Azure 门户中浏览到你的缓存,然后在“资源”菜单中选择“导出数据” 。 可以在工作窗格中看到“选择存储容器”。
选择“选择存储容器”,随即显示可用存储帐户列表。 选择所需存储帐户。 存储帐户必须与缓存位于同一区域中。 如果使用托管标识进行身份验证,则存储帐户可以位于不同的订阅中。 否则,存储帐户必须与缓存位于同一订阅中。
重要
- 导出操作适用于页 Blob,经典存储帐户和资源管理器存储帐户都支持页 Blob。
- Azure 托管 Redis 不支持导出到 ADLS Gen2 存储帐户。
- 如果未能成功将缓存数据导出到启用防火墙的存储帐户,请参阅“如果我在存储帐户上启用了防火墙,该怎么办?”
有关详细信息,请参阅 Azure 存储帐户概述。
选择要保存导出的存储容器,然后执行“选择”。 若要使用新容器,请选择“添加容器”以先添加该容器,然后从列表中选择该容器。
键入一个 Blob 名称前缀,然后选择“导出”开始导出过程 。 blob 名称前缀用作此导出操作生成的文件名的前缀。
可通过关注 Azure 门户中的通知或查看审核日志中的事件,来监视导出操作的进度。
在导出过程中,缓存仍可供使用。
导入/导出常见问题解答
本部分包含有关导入/导出功能的常见问题解答。
- 哪些层支持导入/导出?
- 能否从任何 Redis 服务器导入数据?
- 可以导入哪些 RDB 版本?
- 导入/导出操作期间缓存是否可用?
- 导入/导出与 Redis 持久性有何区别?
- 能否使用 PowerShell、CLI 或其他管理客户端自动执行导入/导出?
- 在导入/导出操作期间收到超时错误。 它意味着什么?
- 在将数据导出到 Azure Blob 存储时遇到错误。 发生了什么情况?
- 如果我在存储帐户上启用了防火墙,该怎么办?
- 我能否通过一个与缓存不同的订阅中的存储帐户导入或导出数据?
- 需要向存储帐户容器共享访问签名 (SAS) 令牌授予哪些权限才能允许导出?
哪些层支持导入/导出?
Azure 托管 Redis 的所有层中均提供导入和导出功能。
能否从任何 Redis 服务器导入数据?
是的,可以导入从 Azure 托管 Redis 实例或者从任何云或环境中运行的任何 Redis 服务器导出的数据。 这些环境包括 Linux、Windows 或 Amazon Web Services 等云平台。 要导入此数据,请从所需的 Redis 服务器将 RDB 文件上传到 Azure 存储帐户中的页 blob 或块 blob。 然后,将其导入 Azure 托管 Redis 实例。
例如,您可能希望:
从生产缓存导出数据。
然后,将其导入缓存,该缓存用作测试或迁移的暂存环境的一部分。
重要
使用页 blob 时,要成功导入从非 Azure 托管 Redis 的 Redis 服务器导出的数据,页 blob 大小必须在 512 字节边界上对齐。 有关用于执行任何所需的字节填充的示例代码,请参阅示例页 blob 上传。
可以导入哪些 RDB 版本?
有关对导入使用的受支持 RDB 版本的详细信息,请参阅兼容性部分。
导入/导出操作期间缓存是否可用?
- 导出 - 缓存保持可用,可以在导出操作过程中继续使用缓存。
- 导入 - 在导入操作开始时,缓存即变为不可用,在导入操作完成后,缓存变为可供使用。
导入/导出与 Redis 持久性有何区别?
Azure 托管 Redis 暂留功能主要是一项数据持续性功能。 相反,导入/导出功能设计为一种定期备份数据以进行时间点恢复的方法。
配置暂留后,缓存会根据可配置的备份频率将数据的快照暂留到磁盘。 用户无法访问此持久性文件。 如果发生了灾难性事件,导致主缓存和副本缓存都无法使用,则会使用最新快照自动还原缓存数据。
数据暂留专为灾难恢复而设计。 它不用作时间点恢复机制。
如果要定期备份数据以进行时间点恢复,建议使用导入/导出功能。 有关详细信息,请参阅如何为 Azure 托管 Redis 配置数据暂留。
能否使用 PowerShell、CLI 或其他管理客户端自动执行导入/导出?
是的,请参阅以下说明:
- 导入 Redis 数据和导出 Redis 数据的 PowerShell 说明。
- 导入 Redis 数据和导出 Redis 数据的 Azure CLI 说明
在导入/导出操作期间收到超时错误。 它意味着什么?
如果在启动操作之前停留在“导入数据”或“导出数据”的时间超过 15 分钟,则会收到错误,错误消息类似于以下示例:
The request to import data into cache 'contoso55' failed with status 'error' and error 'One of the SAS URIs provided could not be used for the following reason: The SAS token end time (se) must be at least 1 hour from now and the start time (st), if given, must be at least 15 minutes in the past.
若要解决此错误,请在 15 分钟过去之前启动导入或导出操作。
在将数据导出到 Azure Blob 存储时遇到错误。 发生了什么情况?
导出仅适用于以块 blob 形式存储的 RDB 文件。 目前不支持其他 blob 类型。 有关详细信息,请参阅 Azure 存储帐户概述。 如果使用访问密钥对存储帐户进行身份验证,则在存储帐户上设置防火墙例外往往会导致导入/导出过程失败。
如果我在存储帐户上启用了防火墙,该怎么办?
需要在存储帐户设置中选中“允许受信任服务列表中的 Azure 服务访问此存储帐户”。 然后,使用托管标识(由系统或用户分配)并为该对象 ID 预配存储 Blob 数据贡献者 RBAC 角色。
有关详细信息,请参阅“存储帐户的托管标识 - Azure Cache for Redis”
我能否通过一个与缓存不同的订阅中的存储帐户导入或导出数据?
可以从与你的缓存不同的订阅中的存储帐户导入和导出数据,但必须使用托管标识作为身份验证方法。 配置导入或导出时,需要选择包含存储帐户的所选订阅。
需要向存储帐户容器共享访问签名 (SAS) 令牌授予哪些权限才能允许导出?
为了成功导出到 Azure 存储帐户,共享访问签名 (SAS) 令牌必须具有以下权限:
read
add
create
write
delete
tag
move