ApsaraDB for MongoDB執行個體支援了按Key閃回功能,您可以對指定的資料集合發起備份,便於後續因系統漏洞或故障而引起的小部分資料錯亂或意外丟失時,根據資料的閃回Key (預設為_id)可對這部分資料進行回檔,快速恢複資料。
按Key閃回功能於2024年02月26日正式開啟公測。公測期間不收費。公測期間暫不承諾SLA。
前提條件
執行個體類型為複本集或分區叢集。
執行個體儲存類型為雲端硬碟版。
執行個體大版本為MongoDB 5.0及以上。
按Key閃回功能目前處於公測階段,如需使用,請聯絡支援人員申請開通。
注意事項
開啟按Key閃回功能會對執行個體效能產生一定影響,例如執行個體的TPS效能最高可能下降3%。
上述執行個體效能影響僅供參考,具體以實際資料為準。
功能說明
功能 | 功能子項 | 說明 |
任務配置 | 閃回任務配置完成後生效時間 | 10分鐘。 |
閃回資料保留時間 | 1~7天。 | |
閃回備份資料可恢復 | 開啟閃回備份任務後到目前時間。 在閃回備份保留的有效期間內,您可以根據指定的時間和行ID,進行按Key閃回。 | |
閃回備份操作 | 支援的閃回操作 |
|
支援的按行索引類型 |
| |
支援索引的資料類型 | 目前僅支援以下資料類型:
| |
索引欄位 | 欄位名稱只能包括字母、數字或底線(_),且只能以字母或底線(_)開頭 | |
索引的長度和個數 | 單個索引欄位長度為128,索引欄位的數量限制是10個。 | |
查詢時支援的最大索引值大小 | 16KB,超過16KB的資料查詢時可能會查不到。 | |
查詢結果裡支援的單行資料大小 | 無限制。 | |
閃回備份恢複 | 單次閃回恢複的最大行數 | 1000行,超過1000行會被截斷。 |
預覽閃回資料 | 恢複索引key預覽的長度需小於48KB。 | |
庫表名設定 | 庫名加表名長度需小於254。 例如,test庫table表,展示為 |
費用說明
公測期間不收費。
開啟閃回備份
訪問MongoDB複本集執行個體列表或MongoDB分區叢集執行個體列表,在上方選擇資源群組和地區,然後單擊目標執行個體ID。
在目標執行個體頁面的左側導覽列,單擊備份與復原。
單擊按key閃回頁簽。
單擊閃回備份設定。
說明執行該操作後可能會提示許可權不足,您需要輸入帳號及密碼(該帳號必須擁有待閃回庫的讀寫權限)以繼續操作。關於資料庫帳號及使用權限設定,請參見建立資料庫帳號並添加許可權。
在閃回備份設定側邊框中,配置以下資訊後,單擊確定。
參數
說明
備份保留時間
備份檔案保留的天數,取值範圍為1~7。
例如,您設定了1天的保留時間,系統會在產生閃回備份檔案後開始計時,並且在1天后自動刪除該備份檔案。
選擇需要備份的表
選擇需要備份的表。
預覽並設定需要備份的表中的索引
輸入需要備份的索引項目(與getIndexes()獲得的索引無關,指需要備份的行ID),預設為
_id,多個索引間用逗號(,)分隔。一般索引的數量最多支援設定10個。
在閃回備份設定修改對話方塊中,單擊確定。
開啟閃回備份需要10分鐘生效時間,在閃回備份生效後,寫入的資料才能被閃回。
發起閃回任務
在備份與恢複的按key閃回頁簽,單擊目標備份任務右側的操作列的按時間點閃回。
單擊備份工作清單側邊框中,配置以下資訊後,單擊確定。
參數
說明
選擇要恢複的表
無需修改。
建立暫存資料表
用於儲存閃回資料的暫存資料表。
選擇要恢複的時間點
選擇需要閃回到的備份時間點。
說明上一步開啟閃回備份需要10分鐘生效時間,生效後才能選擇要恢複的時間點。
填寫要恢複的key
多組主鍵之間需要使用分號(;)分隔,表示或的關係。
例如,索引為_id,需要恢複的值為key1和key2,那麼您需要在輸入框中輸入
key1;key2,下方的恢複索引key預覽會顯示[ { "_id": "key1" }, { "_id": "key2" } ]。一組主鍵之間需要使用逗號(,)分隔,表示且的關係。支援指定某一列進行查詢,文法為
column=value。例如,輸入框中輸入
key1;test1=v1,key2,下方的恢複索引key預覽會顯示[ { "_id": "key1" }, { "test1": "v1", "_id": "key2" } ]。如果主鍵中存在逗號(,)或者分號(;),請使用逸出字元(\)對其轉義。
例如,主鍵為
a,b,name您需要在輸入框中傳入a\,b。
說明要恢複的key需要包含在閃回備份設定的“需要備份的索引項目”中。
該參數如果傳入的值過長,系統會自動拆分為多個閃回任務,該情況不會對閃回備份產生影響。
在閃回資料預覽對話方塊中,選中需要閃回的資料,單擊確定。
針對(;)分割的主鍵,如
test1=v1; test2=v2,會展示滿足test1=v1的記錄項與滿足test2=v2的記錄項。針對(,)分割的主鍵,如果存在
_id索引,如key,test1=v1,test2=v2,會展示滿足_id=key的記錄項,忽略其他索引test1,test2;如果不存在_id索引,如test1=v1,test2=v2,會展示滿足test1=v1且滿足test2=v2的記錄項。
發起閃回任務後,閃回的資料會儲存在暫存資料表中,在暫存資料表的有效期間內(即開啟閃回備份功能時設定的備份保留時間),您可以將暫存資料表中的資料恢複至原表中。
恢複至原表
在備份與恢複頁面單擊按key閃回頁簽。
單擊恢複至原表,可以恢複最近一條閃回任務;也可以單擊閃回歷史記錄,查看所有的閃回備份任務,並選擇需要閃回的資料恢複至原表。
在恢複至原表對話方塊中,單擊確定。
說明執行該操作將會把暫存資料表中的資料恢複到原表中,原表中的資料會被覆蓋。
覆蓋操作約耗時1~2分鐘,期間請不要額外寫入相同的Key,否則恢複後的資料可能不符合預期。
可以在恢複任務記錄中,查看所有的閃回恢複任務。
關閉閃回備份
關閉指定備份任務
在備份與恢複的按key閃回頁簽,單擊目標備份任務右側的操作列的關閉。
關閉所有備份任務
在備份與恢複的按key閃回頁簽,單擊頁面左上方的關閉閃回備份。
關閉閃回備份後,之前的閃回備份資料將不可用。
使用樣本
第一步:開啟閃回備份
查看當前庫表test1.test001的資料。

設定本次備份保留時間為1天,需要備份的表為
test001,選擇備份的索引為_id,name。
開啟後,等待10分鐘後閃回備份生效,再進行下一步。
第二步:發起閃回任務
在
2025-08-14T19:27(UTC+8)對test.test001表進行修改。修改一條
{name=xiaoli}的文檔,設定{age=29};刪除一條{name=xiaomi}的文檔。
查看當前庫表
test1.test001的資料。可以看到上述修改已生效。

控制台發起閃回任務。
選擇恢複的表為
test001,設定暫存資料表名稱為temp_flashback_test003, 選擇要恢複的時間點為資料修改之前的時間2025-08-14T19:16(UTC+8),填寫要恢複的索引項目為689d5715fb3153809d4894a1;name=xiaoli,可以看到恢複索引預覽為[{"_id":"689d5715fb3153809d4894a1"},{"name":"xiaoli"}]。
點擊確定,可以預覽閃回資料。
如圖可以看到
2025-08-14T19:27(UTC+8)的修改和刪除記錄(對應閃回操作為修改和新增)。
勾選要發起閃回的資料,點擊確定按鈕,發起閃回任務。
閃回任務如下展示,在閃回歷史記錄中可以看到多條閃回歷史。

查看暫存資料表資料。
針對
[{"_id":"689d5715fb3153809d4894a1"},{"name":"xiaoli"}]閃回的暫存資料表資料如下。
第三步:恢複至原表
單擊恢複至原表,可以恢複最近一條閃回任務。

或者可以點擊“閃回歷史記錄”,選擇一條閃回任務進行恢複。

選擇最近的一條閃回任務發起恢複。
單擊“恢複任務記錄” 可以查看恢複任務的進度。

查看當前庫表
test1.test001的資料。資料已恢複到
2025-08-14T19:27(UTC+8)修改前。