庫表恢復是指僅恢復指定的部分庫或部分表到原集群。例如游戲業務中有時僅需恢復某個或某些玩家的數據,此時可使用庫表恢復方式。庫表恢復支持從備份集恢復和恢復到過去時間點兩種備份方式。本文介紹如何將指定的庫或表恢復到過去時間點。
簡介
PolarDB提供的庫表恢復功能,不會覆蓋和刪除原集群中已有的庫表,不會將數據寫入原集群的庫表中,而是在原集群中新建庫表。您可以在庫表恢復過程中指定新的庫名或表名,通過指定庫和表的方式,將db1
的備份數據恢復到db2
。
庫表恢復過程中,不會影響原集群數據庫的正常訪問,但可能會占用原集群的計算資源,從而導致集群CPU和IOPS使用率升高。
版本要求和使用限制
版本要求
您可以通過查詢版本號來確認集群版本。
當前PolarDB MySQL版的企業版和標準版都支持庫表恢復功能,具體版本要求及限制如下。
PolarDB企業版支持庫表恢復。目前僅集群版系列支持庫表恢復功能,集群版本要求如下:
PolarDB MySQL版5.6版本,修訂版本需為5.6.1.0.25及以上。
PolarDB MySQL版5.7版本,修訂版本需為5.7.1.0.8及以上。
PolarDB MySQL版8.0.1版本,修訂版本需為8.0.1.1.14及以上。
PolarDB MySQL版8.0.2版本,修訂版本需為8.0.2.2.0及以上。
PolarDB標準版支持庫表恢復,集群版本要求如下:
PolarDB MySQL版5.7版本X86架構,修訂版本需為5.7.1.0.30及以上。
PolarDB MySQL版8.0.1版本X86架構,修訂版本需為8.0.1.1.38.2及以上。
PolarDB MySQL版8.0.2版本X86架構,修訂版本需為8.0.2.2.21及以上。
PolarDB MySQL版8.0.1版本倚天(ARM)架構,修訂版本需為8.0.1.1.41及以上。
若存儲類型為云盤,則不支持50000張表以上的庫表恢復。
GDN中的主集群支持庫表恢復功能,集群版本要求如下:
企業版
PolarDB MySQL版5.6版本,修訂版本為5.6.1.0.42及以上。
PolarDB MySQL版5.7版本,修訂版本需為5.7.1.0.30及以上。
PolarDB MySQL版8.0.1版本,修訂版本需為8.0.1.1.44及以上。
PolarDB MySQL版8.0.2版本,修訂版本需為8.0.2.2.25.3及以上。
標準版
PolarDB MySQL版5.6版本,修訂版本為5.6.1.0.42及以上。
PolarDB MySQL版5.7版本,修訂版本需為5.7.1.0.30及以上。
PolarDB MySQL版8.0.1版本,修訂版本需為8.0.1.1.38.2及以上。
PolarDB MySQL版8.0.2版本,修訂版本需為8.0.2.2.21及以上。
支持使用庫表恢復新版的集群版本要求如下:
企業版
PolarDB MySQL版5.6版本,修訂版本為5.6.1.0.42及以上。
PolarDB MySQL版5.7版本,修訂版本需為5.7.1.0.30及以上。
PolarDB MySQL版8.0.1版本,修訂版本需為8.0.1.1.44及以上。
PolarDB MySQL版8.0.2版本,修訂版本需為8.0.2.2.25.3及以上。
標準版
PolarDB MySQL版5.6版本,修訂版本為5.6.1.0.42及以上。
PolarDB MySQL版5.7版本,修訂版本需為5.7.1.0.30及以上。
PolarDB MySQL版8.0.1版本,修訂版本需為8.0.1.1.38.2及以上。
PolarDB MySQL版8.0.2版本,修訂版本需為8.0.2.2.21及以上。
說明庫表恢復新版是在庫表恢復舊版的基礎上,對數據恢復至原集群的速度進行了優化。其原理和速度可參見整體流程和預估時間。
使用限制
PolarDB多主集群(庫表)不支持庫表恢復。
不支持在包含全局二級索引(Global Secondary Index)的表上使用庫表恢復功能。
如果實例沒有RO節點,超過50000張表時將不支持庫表恢復功能。
不支持在GDN中的從集群上使用庫表恢復功能。
庫表恢復功能不支持恢復列存索引。
不支持在歸檔為冷數據的表上使用庫表恢復功能。
庫表恢復功能只支持恢復以InnoDB為存儲引擎的表。
若您當前集群不支持使用庫表恢復功能,您可以通過全量恢復方式1:從備份集恢復或全量恢復方式2:恢復到過去時間點的方式將數據恢復到新的集群,再將數據遷移至原集群。
注意事項
當前庫表恢復方式中的恢復到過去時間點,只支持從一級備份的過去時間點恢復,不支持從二級備份恢復。
庫表恢復只會恢復指定的表,操作時請確認已選中所有需要恢復的表。
說明若無法確定所有涉及的表,建議您將整個集群的歷史數據恢復到一個新集群后再遷移至原集群。更多詳情,請參見全量恢復方式1:從備份集恢復和全量恢復方式2:恢復到過去時間點。
在以下場景執行庫表恢復操作時,庫表恢復會執行失敗。
指定的庫名或表名在原集群中已存在。
從備份集生成時間點到恢復時間點期間,恢復的表被刪除或集群中存在與目標庫或目標表同名的庫表。
若選擇非整庫恢復,該庫每次最多支持恢復100張表。若選擇恢復庫,則支持恢復的表數量為該庫下所有的表。
說明若一次恢復的表數量太多,恢復時間會較長,因此不建議一次恢復過多表。
若您需要恢復的表數量較多,建議您選擇恢復全量歷史數據到新集群中的方案,詳細操作步驟,請參見全量恢復方式1:從備份集恢復和全量恢復方式2:恢復到過去時間點。
集群內的表(包括系統表)超過50000張時也可以使用庫表恢復功能。
說明該功能目前處于灰度階段,如需使用,您可以聯系我們加入白名單,啟用該功能。
查詢集群內的表(包括系統表)數量。SQL語句如下:
SELECT COUNT(*) FROM information_schema.tables;
查詢集群內的系統表數量。SQL語句如下:
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema IN ('sys', 'performance_schema', 'mysql', 'information_schema', '__recycle_bin__');
庫表恢復功能不支持恢復觸發器(Trigger),若原表設置了Trigger,該Trigger不會被恢復。
庫表恢復功能不支持恢復外鍵(Foreign Key),若原表設置了Foreign Key,該Foreign Key不會被恢復。
操作步驟
登錄PolarDB控制臺。
在左上角,選擇集群所在地域。
找到目標集群,單擊集群ID。
在左側導航欄中,選擇 。
- 在備份恢復頁面,單擊庫(表)恢復。
在彈出的對話框中,選擇恢復方式為按時間點,并選擇需要恢復至的時間點。
說明恢復至的時間點選擇需符合可恢復時間點的限制,同時離該時間點最近一份全量備份集中必須存在需要恢復的表,才能正常使用按時間點恢復功能。可恢復時間點的范圍與備份設置中的日志備份保留期限有關,默認為7天。
在需要恢復的庫和表區域左側,選中需要恢復的目標庫,并在右側選中目標表。
說明若您未指定庫名和表名,則系統會通過在原庫名或原表名后添加
_backup
的方式,來自動生成新的庫名和表名。如原表為test
,則自動生成的新的表名為test_backup
。若選中目標庫后但未指定具體的數據表,默認恢復該庫下的所有數據。
單擊確定即可。
相關API
API | 描述 |
DescribeMetaList | 調用DescribeMetaList接口查看支持恢復的庫表元信息詳情。 |
RestoreTable | 調用RestoreTable恢復PolarDB庫表。 |