你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
为 Azure 托管 Redis(预览版)实例配置数据持久性
使用 Redis 持久化,可以持久化存储在缓存实例中的数据。 如果发生硬件故障,缓存实例在恢复联机时会使用持久化文件中的数据解除冻结。 持久化数据的功能是提高缓存实例持久性的重要方法,因为所有缓存数据存储在内存中。 如果在缓存节点关闭的情况下发生故障,则可能会丢失数据。 持久化应作为 Azure 托管 Redis(预览版)高可用性和灾难恢复策略的关键部分。
重要
数据持久性旨在针对意外 Redis 节点故障提供复原能力,但它不是数据备份或时间点恢复 (PITR) 功能。 如果将损坏的数据写入 Redis 实例,该数据也会持久保留。 若要备份 Redis 实例,使用导出功能。
可用范围
层 | 内存优化,均衡,计算优化 | 闪存优化 |
---|---|---|
可用 | 是 | 是 |
Redis 中的数据持久化类型
对于 Azure 托管 Redis,有两个持久性选项:Redis 数据库 (RDB) 格式和仅追加文件 (AOF) 格式:
- RDB 持久性 - 配置 RDB 持久性后,Azure 托管 Redis 会以二进制格式持久保持缓存的快照。 快照保存在装载到 Redis 实例的托管磁盘上。 可配置的备份频率决定了持久保存快照的频率。 如果发生了灾难性事件,导致主缓存和副缓存都无法使用,则会使用最新快照自动重新构造缓存。 详细了解 RDB 暂留的优点和缺点。
- AOF 持久性 - 使用 AOF 持久性时,Azure 托管 Redis 会将每个写入操作保存到日志。 日志每秒在装载到 Redis 实例的托管磁盘上保存一次。 如果发生灾难性事件,导致主缓存和副本缓存都无法使用,则会使用存储的写入操作自动重新构造缓存。 详细了解 AOF 暂留的优点和缺点。
重要
Azure 托管 Redis 持久性功能旨在用于在数据丢失后自动将数据还原到同一缓存。 RDB/AOF 持久化数据文件既不能供用户访问,也不能导入新的或现有的缓存中。 要在缓存之间移动数据,可使用导入和导出功能。 有关详细信息,请参阅在 Azure 托管 Redis 中导入和导出数据。
要生成可添加到新缓存的任何数据备份,可以使用 PowerShell 或 Azure CLI 编写自动化脚本,定期导出数据。
先决条件和限制
持久性功能旨在用于在数据丢失后将数据还原到同一缓存。
- 无法将 RDB/AOF 持久化数据文件导入到新缓存或现有缓存。 请改用导入/导出功能。
- 使用活动异地复制的缓存不支持持久性。
- 默认情况下,保存持久化数据文件的托管磁盘使用 Microsoft 托管密钥 (MMK) 进行加密,但也可以使用客户管理的密钥 (CMK) 进行加密。 有关详细信息,请参阅管理数据加密。
如何使用 Azure 门户设置数据持久化
登录到 Azure 门户,然后按照 Azure 托管 Redis 快速入门指南中的说明开始操作。
到达“高级”选项卡时,在“数据持久化”部分中选择“RDB”或“AOF”选项。
若要启用 RDB 持久性,请选择“RDB”并配置设置。
设置 建议值 说明 备份频率 使用下拉列表并选择备份间隔。 选项包括“60 分钟”、“6 小时”和“12 小时”。 在上一个备份操作成功完成后,此间隔就会开始倒计时。 当它过期时,将启动新的备份。 若要启用 AOF 持久性,选择“AOF”。 只有一个备份频率选项可用。
按照 Azure 托管 Redis 快速入门指南中的其余说明完成缓存的创建。
注意
可以通过导航到“资源”菜单中的“高级设置”,随时将持久化添加到以前创建的 Azure 托管 Redis 实例中。
如何使用 PowerShell 和 Azure CLI 设置数据持久化
使用 PowerShell
New-AzRedisEnterpriseCache 命令可用于通过数据持久性创建新的 Azure 托管 Redis 实例。 使用 RdbPersistenceEnabled
、RdbPersistenceFrequency
、AofPersistenceEnabled
和 AofPersistenceFrequency
参数配置持久化设置。 此示例使用一小时频率的 RDB 持久性创建一个新的均衡 B10 实例:
New-AzRedisEnterpriseCache -Name "MyCache" -ResourceGroupName "MyGroup" -Location "West US" -Sku "Balanced_B10" -RdbPersistenceEnabled -RdbPersistenceFrequency "1h"
可以使用 Update-AzRedisEnterpriseCacheDatabase 命令更新现有缓存。 以下示例可将 12 小时频率的 RDB 持久性添加到现有实例:
Update-AzRedisEnterpriseCacheDatabase -Name "MyCache" -ResourceGroupName "MyGroup" -RdbPersistenceEnabled -RdbPersistenceFrequency "12h"
使用 Azure CLI
az redisenterprise create 命令可用于通过数据持久性创建新的 Azure 托管 Redis 实例。 使用 rdb-enabled
、rdb-frequency
、aof-enabled
和 aof-frequency
参数配置持久化设置。 此示例使用一小时频率的 RDB 持久性创建一个新的均衡 B10 实例:
az redisenterprise create --cluster-name "cache1" --resource-group "rg1" --location "East US" --sku "Balanced_B10" --persistence rdb-enabled=true rdb-frequency="1h"
可以使用 az redisenterprise database update 命令更新现有高速缓存。 以下示例可将 12 小时频率的 RDB 持久化添加到现有缓存实例:
az redisenterprise database update --cluster-name "cache1" --resource-group "rg1" --persistence rdb-enabled=true rdb-frequency="12h"
管理数据加密
由于 Redis 持久化会创建静态数据,因此加密此数据是许多用户关注的一个重要问题。 在 Azure 托管 Redis 上,数据存储在装载到缓存实例的托管磁盘上。 默认情况下,保存持久化数据的磁盘和 OS 磁盘将使用 Microsoft 托管密钥进行加密。 也可使用客户管理的密钥 (CMK) 来控制数据加密。 相关说明请参阅 Azure 托管 Redis 上的加密。
保留常见问题
以下列表包含有关 Azure 托管 Redis 持久性的常见问题的解答。
- 能否在此前已创建的缓存的基础上启用保留?
- 是否可同时启用 AOF 暂留和 RDB 暂留?
- 暂留如何与异地复制一起使用?
- 应该选择哪个暂留模型?
- 如果我缩放到不同大小并还原了缩放操作之前生成的备份,会发生什么情况?
- 是否需要为数据持久性中使用的托管磁盘付费?
RDB 暂留
AOF 暂留
能否在此前已创建的缓存的基础上启用保留?
是的,可以在创建缓存时或在现有 Azure 托管 Redis 实例上配置持久性。
是否可以同时启用 AOF 暂留和 RDB 暂留?
不可以,只能分别启用 RDB 或 AOF,但不能同时启用二者。
暂留如何与异地复制一起使用?
如果启用数据持久化,则无法为缓存启用异地复制。 这是因为在发生区域性服务中断时,活动异地复制可提供比数据持久性更好的复原能力。 如果需要导出数据的副本作为备份,请改用导出功能。
应该选择哪个暂留模型?
AOF 持久性会将每次写入保存到日志,这可能会对吞吐量产生重大影响。 RDB 持久性根据配置的备份间隔保存备份,对性能的影响极小。 如果主要目标是最大程度地减少数据损失,并且你可以应对缓存吞吐量下降,请选择 AOF 持久性。 如果希望在缓存上保持最优吞吐量,但仍希望使用一种数据恢复机制,请选择 RDB 暂留。
有关使用 AOF 持久化时的性能详细信息,请参阅 AOF 持久化是否会影响缓存的吞吐量、延迟或性能?
AOF 持久化是否会影响缓存的吞吐量、延迟或性能?
使用 AOF 持久性确实会影响吞吐量。 AOF 在所有主进程上运行,因此与没有 AOF 持久性的相同缓存相比,AOF 持久性缓存的 CPU 和服务器负载会更高。 AOF 提供与内存中数据的最佳一致性,因为每次写入和删除仅在数秒钟延迟的情况下即可持久化保存。 代价是 AOF 的计算密集程度更高。
如果我缩放到不同大小并还原了缩放操作之前生成的备份,会发生什么情况?
对于 RDB 暂留和 AOF 暂留:
- 扩展到更大的大小不会产生任何影响。
- 如果缩减到更小的大小,并且更小的大小空间不足,无法容纳上次备份的所有数据,则在还原过程中会逐出密钥。 通常使用 allkeys-lru 逐出策略来逐出密钥。
是否需要为数据持久性中使用的托管磁盘付费?
托管磁盘存储不收费。 费用已包含在价格中。
创建缓存后是否可更改 RDB 备份频率?
是,可以使用 Azure 门户、CLI 或 PowerShell 更改 RDB 持久化的备份频率。
为何我的 RDB 备份频率为 60 分钟,而两次备份的间隔却超过 60 分钟?
RDB 持久性备份频率间隔在先前备份过程已成功完成后才会开始。 如果备份频率为 60 分钟,而备份过程需要 15 分钟才能完成,则在上一次备份开始以后,要再过 75 分钟才会开始下一次备份。
进行新备份以后,旧的 RDB 备份会发生什么情况?
除最新备份外的所有 RDB 持久性备份会被自动删除。 这种删除可能不会即刻发生,但旧备份是不会无限期保存。
什么是重写?重写对缓存有何影响?
在 AOF 文件足够大时,重写会自动处于缓存上的队列中。 重写使用创建当前数据集所需的最小操作集来重设 AOF 文件大小。 重写期间预期会很快达到性能限制,尤其是在处理大型数据集时。 AOF 文件越大,重写发生频率就会越低,但是如果发生,就会耗费较长时间。
缩放启用 AOF 的缓存时会出现什么情况?
如果缩放时 AOF 文件很大,则缩放操作所花时间会长于正常水平,因为缩放完成后才会重新加载文件。
有关缩放的详细信息,请参阅如果我缩放到不同大小并还原了缩放操作之前生成的备份,会发生什么情况?