設定 Azure Cache for Redis 執行個體的資料持續性
Redis 持續性 (英文) 可讓您保存儲存在快取執行個體中的資料。 如果發生硬體失敗,快取執行個體會在重新上線時,透過來自持續性檔案的資料解除凍結。 保存資料的能力是提升快取執行個體持久性的重要方式,因為所有快取資料都是儲存在記憶體中。 如果因快取節點關閉而發生失敗,就可能會遺失資料。 持續性應該是您搭配 Azure Cache for Redis 的高可用性和災害復原策略的關鍵部分。
警告
如果您是使用進階層上的持續性,在使用資料持續性功能之前,請檢查您的儲存體帳戶是否已啟用虛刪除。 使用資料持續性搭配虛刪除會導致儲存成本變得非常高。 如需詳細資訊,請參閱我是否應該啟用虛刪除?。
警告
企業和企業 Flash 層上的 AOF 持續性一律寫入選項設定為 2025 年 4 月 1 日淘汰。 已不再建議使用此選項具有顯著的效能限制。 建議改為使用每秒寫入選項或使用 RDB 持續性。
可用性範圍
層 | 基本、標準 | 進階 | Enterprise,Enterprise Flash |
---|---|---|---|
可用的 | No | Yes | 是 (預覽) |
Redis 中的資料持續性類型
您有兩個選項可以用來搭配 Azure Cache for Redis 使用持續性:「Redis 資料庫」(RDB) 格式,以及「僅限附加檔案」(AOF) 格式:
- RDB 持續性 - 當您使用 RDB 持續性時,Azure Cache for Redis 會以二進位格式保存快取的快照集。 快照集會儲存在 Azure 儲存體帳戶中。 可設定的備份頻率會決定保存快照集的頻率。 如果發生同時停用主要和複本快取的災難性事件,即可使用最新的快照集自動重新建構快取。 深入了解 RDB 持續性的優點和缺點。
- AOF 持續性 - 當您使用 AOF 持續性時,Azure Cache for Redis 會將每個寫入作業儲存至記錄。 而記錄會以至少每秒一次的頻率儲存到 Azure 儲存體帳戶。 如果發生同時停用主要和複本快取的災難性事件,即可使用儲存的寫入作業自動重新建構快取。 深入了解 AOF 持續性的優點和缺點。
Azure Cache for Redis 持續性功能是用來在發生資料遺失後自動將資料還原到相同的快取中。 RDB/AOF 保存的資料檔案無法匯入新的快取或現有快取。 若要跨快取移動資料,請使用 [匯入和匯出] 功能。 如需詳細資訊,請參閱在 Azure Redis 快取中匯入和匯出資料。
若要產生可新增至新快取的任何資料備份,可以使用 PowerShell 或 CLI 撰寫自動化指令碼,以定期匯出資料。
先決條件與限制
持續性功能主要是在資料遺失後用來將資料還原到相同的快取。
- RDB/AOF 保存的資料檔案無法匯入新的快取或現有的快取。 改用匯入/匯出 (部分機器翻譯) 功能。
- 使用被動異地複寫或作用中異地複寫的快取不支援持續性。
- 在「進階」層上,AOF 持續性無法支援多個複本。
- 在「進階」層上,資料必須保存在與快取執行個體相同區域的儲存體帳戶中。
- 在「進階」層上,如果使用受控識別 (部分機器翻譯) 來連線到儲存體帳戶,便可以使用不同訂用帳戶中的儲存體帳戶來保存資料。
進階層和企業層中的持續性差異
在進階層上,資料會直接保存至您擁有和管理的 Azure 儲存體帳戶。 Azure 儲存體會在保存資料時自動加以加密,但您也可以使用自己的金鑰來進行加密。 如需詳細資訊,請參閱適用於 Azure 儲存體加密的客戶自控金鑰。
警告
如果您是使用進階層上的持續性,在使用資料持續性功能之前,請檢查您的儲存體帳戶是否已啟用虛刪除。 使用資料持續性搭配虛刪除會導致儲存成本變得非常高。 如需詳細資訊,請參閱我是否應該啟用虛刪除?。
在企業和 Enterprise Flash 層上,資料會保存至直接連結至快取執行個體的受控磁碟。 使用者無法設定或存取該位置。 使用受控磁碟會增加持續性的效能。 磁碟預設會使用 Microsoft 受控金鑰 (MMK) 加密,但也可以使用客戶自控金鑰 (CMK)。 如需詳細資訊,請參閱管理資料加密。
如何使用 Azure 入口網站設定資料持續性
如何使用 PowerShell 和 Azure CLI 設定資料持續性
管理資料加密
由於 Redis 持續性會建立待用資料,因此對此資料進行加密對許多使用者而言非常重要。 加密選項會根據所使用的 Azure Cache for Redis 層而有所不同。
使用進階層時,資料會在起始持續性時直接從快取執行個體串流至 Azure 儲存體。 有各種加密方法可以搭配 Azure 儲存體使用,包括 Microsoft 管理的金鑰、客戶自控金鑰,以及客戶提供的金鑰。 如需加密方法的相關資訊,請參閱待用資料的 Azure 儲存體加密。
使用企業和 Enterprise Flash 層時,資料會保存在掛接至快取執行個體的受控磁碟上。 根據預設,保存持續性資料的磁碟和 OS 磁碟都會使用 Microsoft 管理的金鑰來加密。 客戶自控金鑰 (CMK) 也可用來控制資料加密。 請參閱在企業層快取上進行加密以取得指示。
永續性常見問題集
下列清單包含 Azure Cache for Redis 持續性相關常見問題的解答。
- 可以對先前建立的快取啟用永續性嗎?
- 我可以同時啟用 AOF 和 RDB 持續性嗎?
- 持續性如何與異地複寫搭配運作?
- 我應該選擇哪一種持續性模型?
- 如果我縮放為不同規模,並還原為縮放作業之前製作的備份時,會發生什麼事?
- 針對持續性,我可以在兩個不同的快取之間使用相同的儲存體帳戶嗎?
- 我需要為在資料持續性中使用的儲存體支付費用嗎?
- RDB 和 AOF 持續性寫入 Blob 的頻率有多高,我是否該啟用虛刪除?
- 儲存體帳戶上的防火牆例外狀況會影響持續性
- 如何檢查儲存體帳戶上是否已啟用虛刪除?
RDB 持續性
AOF 持續性
- 何時應該使用第二個儲存體帳戶?
- AOF 持續性是否會影響快取的輸送量、延遲或效能?
- 我要如何移除第二個儲存體帳戶?
- 什麼是重寫,其對快取有何影響?
- 在啟用 AOF 下調整快取預期會發生什麼事?
- 我的 AOF 資料在儲存體中的組織方式為何?
- 如果我有多個複本,是否可以啟用 AOF 持續性?
可以對先前建立的快取啟用永續性嗎?
是,可在建立快取時以及在現有進階、企業或 Enterprise Flash 快取上設定永續性。
我可以同時啟用 AOF 和 RDB 持續性嗎?
不可以,您可以啟用 RDB 或 AOF,但不能同時啟用。
持續性如何與異地複寫搭配運作?
如果您啟用資料持續性,則無法為您的快取啟用異地複寫。
我應該選擇哪一種持續性模型?
AOF 持續性會將每個寫入儲存至記錄,而這對輸送量有相當大的影響。 將 AOF 與 RDB 持續性比較,RDB 持續性是根據設定的備份間隔儲存備份,對效能的影響最小。 如果您的主要目標在於減少資料遺失,而且您可以接受較低的快取輸送量,請選擇 AOF 持續性。 如果您想要維持快取的最佳輸送量,但仍需要資料復原的機制,請選擇 RDB 持續性。
如需使用 AOF 持續性時之效能的詳細資訊,請參閱 AOF 持續性是否會影響快取的輸送量、延遲或效能?
AOF 持續性是否會影響快取的輸送量、延遲或效能?
AOF 持續性確實會影響輸送量。 AOF 會在主要和複本處理序上執行,因此您會看到具有 AOF 持續性之快取的 CPU 和伺服器負載高於沒有 AOF 持續性的相同快取。 AOF 提供記憶體中資料的最佳一致性,因為每個寫入和刪除在保存上只會有幾秒鐘的延遲。 代價是 AOF 更需要更大量的計算。
只要 CPU 和伺服器負載都小於 90%,輸送量就會受到懲罰,但快取則會正常運作。 在 CPU 和伺服器負載超過 90% 時,輸送量懲罰可能會提升許多,而且快取所處理之所有命令的延遲都會提升。 延遲會增加的原因,是因為 AOF 持續性會在主要和複本處理序上執行,進一步增加使用中節點上的負載,並將持續性置於資料的關鍵路徑上。
如果我縮放為不同規模,並還原為縮放作業之前製作的備份時,會發生什麼事?
針對 RDB 和 AOF 持續性:
- 如果您縮放為較大的規模,則不會有任何影響。
- 如果縮放為較小的規模,而且您的自訂資料庫設定大於新規模的資料庫限制,則不會還原這些資料庫中的資料。 如需詳細資訊,請參閱我的自訂資料庫設定在調整期間會受到影響嗎?
- 如果縮放為較小的規模,而且較小的規模中沒有足夠的空間可容納最後一次備份的所有資料,系統便會在還原程序中收回金鑰。 通常會使用 allkeys-lru 收回原則來收回金鑰。
針對持續性,我可以在兩個不同的快取之間使用相同的儲存體帳戶嗎?
否,您必須針對不同的快取使用不同的儲存體帳戶。 每個快取都必須設定自己的儲存體帳戶,才能使用持續性。
重要
使用個別的儲存體帳戶進行持續性,並在快取上執行定期匯出作業。
我是否需要為在資料持續性中使用的儲存體支付費用?
- 針對進階快取,系統會根據所使用儲存體帳戶的定價模型,向您收取所使用的儲存體費用。
- 針對企業和 Enterprise Flash 層快取,您無需針對受控磁碟儲存體支付費用。 其已包括在價格中。
RDB 和 AOF 持續性寫入 Blob 的頻率有多高,我是否該啟用虛刪除?
在搭配進階層使用 Azure Cache for Redis 資料持續性時,建議避免在儲存體帳戶上啟用虛刪除。 RDB 和 AOF 持續性寫入 Blob 頻率可為每小時、每幾分鐘或每秒鐘。 此外,在儲存體帳戶上啟用虛刪除表示 Azure Cache for Redis 無法透過刪除舊備份資料來降低儲存體成本。
若一般資料大小的快取同時也會在每秒執行寫入作業,虛刪除的成本很快就會大漲。 如需虛刪除成本的詳細資訊,請參閱定價和計費。
在建立快取之後,可以變更 RDB 備份頻率嗎?
是,您可以使用 Azure 入口網站、CLI 或 PowerShell 變更 RDB 持續性的備份頻率。
為什麼我的 RDB 備份頻率是 60 分鐘,備份的間隔卻超過 60 分鐘?
在前一個備份程序順利完成後,RDB 持續性備份頻率間隔才會開始計算。 如果備份頻率是 60 分鐘,而備份程序要 15 分鐘才能完成,則下一次備份要在先前的備份開始的 75 分鐘後才會開始。
建立新的備份時,舊的 RDB 備份會發生什麼事?
除了最新的備份外,所有 RDB 持續性備份都會自動刪除。 這項刪除作業可能不會立即發生,但較舊的備份不會無限期保存。 如果您針對持續性使用進階層,且儲存體帳戶已開啟虛刪除,則會套用虛刪除設定,而且現有的備份會繼續處於虛刪除狀態。
何時應該使用第二個儲存體帳戶?
當您認為快取上有比預期更高的設定作業時,請針對 AOF 持續性使用次要儲存體帳戶。 設定第二個儲存體帳戶有助於確保您的快取不會達到儲存體頻寬限制。 此選項僅適用於進階層快取。
我要如何移除第二個儲存體帳戶?
您可以透過將 AOF 持續性的第二個儲存體帳戶設定為與第一個儲存體帳戶相同,來移除第二個儲存體帳戶。 針對現有的快取,請從快取的 [資源] 功能表存取 [資料持續性]。 若要停用 AOF 持續性,請選取 [停用]。
什麼是重寫,其對快取有何影響?
當 AOF 檔案變得夠大時,系統會自動將重寫作業排入快取佇列。 重寫作業會調整 AOF 檔案大小,只包含建立目前資料集所需的一組基本作業。 在重寫期間,您可以預期會更快達到效能限制,特別是在處理大型資料集時。 隨著 AOF 檔案越來越大,重寫的發生頻率會減少,但發生時將需要大量時間。
在啟用 AOF 下調整快取預期會發生什麼事?
如果 AOF 檔案在縮放比例時很大,縮放作業所花的時間會超出預期,因為其會在縮放完成後重新載入檔案。
如需縮放的詳細資訊,請參閱如果我縮放為不同規模,並還原為縮放作業之前製作的備份時,會發生什麼事?
我的 AOF 資料在儲存體中的組織方式為何?
當您使用進階層時,儲存在 AOF 檔案中的資料會針對每個分區分成多個分頁 Blob。 根據預設,一半的 Blob 會儲存在主要儲存體帳戶中,另一半則儲存在次要儲存體帳戶中。 將資料分割到多個分頁 Blob 和兩個不同的儲存體帳戶中能夠增加效能。
如果寫入快取的尖峰速率不高,則可能不需要此額外的效能。 在該情況下,可以移除次要儲存體帳戶設定。 所有的 AOF 檔案都會改為儲存在單一主要儲存體帳戶中。 下表顯示針對每個定價層所使用的總分頁 Blob 數量:
進階層 | Blob |
---|---|
P1 | 每個分區 8 個 |
P2 | 每個分區 16 個 |
P3 | 每個分區 32 個 |
P4 | 每個分區 40 個 |
啟用叢集時,快取中的每個分區會有一組專屬的分頁 Blob,如上表所示。 例如,具有三個分區的 P2 快取會將其 AOF 檔案散發到 48 個分頁 Blob:三個分區,每個分區十六個 Blob。
重寫後,儲存體中會有兩組 AOF 檔案。 重寫會在背景發生,並附加至第一組的檔案。 在重寫期間傳送至快取的設定作業,會附加至第二組檔案。 如果失敗,則備份會在重寫期間暫時儲存。 重寫完成後會立即刪除備份。 如果儲存體帳戶已開啟虛刪除,則會套用虛刪除設定,而且現有的備份會繼續處於虛刪除狀態。
儲存體帳戶上的防火牆例外狀況是否會影響持續性?
是。 在 記憶體帳戶 上使用防火牆設定可防止持續性功能運作。 您可以藉由檢視 [錯誤] 計量來查看儲存資料中是否有錯誤。 此計量會指出快取是否因為記憶體帳戶或其他問題的防火牆限制而無法保存數據。
若要搭配已設定防火牆的記憶體帳戶使用數據持續性,請使用 受控識別型驗證 來連線到記憶體。 使用受控識別會將快取執行個體新增至信任的服務清單,讓防火牆例外狀況更容易執行。如果您未使用受控識別,而是使用金鑰授權儲存體帳戶,則儲存體帳戶上的防火牆例外狀況通常會中斷持續性程序。 這只適用於進階層中的持續性。
如果我有多個複本,是否可以啟用 AOF 持續性?
使用進階層時,您無法搭配多個複本使用僅限附加檔案 (AOF) 持續性。 在企業和 Enterprise Flash 層中,複本架構比較複雜,但在區域備援部署中使用企業快取時,支援 AOF 持續性。
如何檢查儲存體帳戶上是否已啟用虛刪除?
選取快取用來取得持續性的儲存體帳戶。 從 [資源] 功能表中選取 [資料保護]。 在工作窗格中,檢查 [啟用 Blob 的虛刪除] 的狀態。 如需 Azure 儲存體帳戶中虛刪除的詳細資訊,請參閱啟用 Blob 的虛刪除。
下一步
深入了解 Azure Cache for Redis 功能。