全部產品
Search
文件中心

PolarDB:庫表恢複:按時間點恢複

更新時間:Sep 29, 2025

通過一個完整的資料全量備份(快照)以及後續一段時間的Redo日誌,就可以將部分庫或部分表的資料恢複到日誌儲存期限內任意時間點。在知曉誤操作發生的時間點後,可以通過此方式,將誤操作的資料庫或者表恢複到誤操作發生之前。

前提條件

已存在備份組。因為按時間點恢複是先將所選時間點前的一個全量資料備份恢複到叢集,然後根據Redo日誌恢複增量資料到所選時間點。若您希望提升恢複速度,可以開啟增強備份,從而縮短備份周期,增加備份密度。

適用範圍

叢集版本

庫表恢複功能支援PolarDB企業版和標準版,但對叢集的修訂版本有特定要求。不同情境下的最低版本要求如下表所示。

  • 基礎功能:代表支援庫表恢複所需滿足的最低版本。

  • GDN主叢集/新版恢複流程:代表在全球資料庫(GDN)主叢集上使用,或想獲得新版恢複流程速度最佳化時,所需滿足的最低版本要求。

    說明

    庫表恢複的新版恢複流程是在舊版的基礎上,對資料恢複至原叢集的速度進行了最佳化。其原理和速度可參見整體流程和預估時間

版本系列

MySQL 版本

架構

基礎功能(最低修訂版本)

GDN主叢集/新版恢複流程(最低修訂版本)

企業版(叢集版)

5.6

X86

5.6.1.0.25

5.6.1.0.42

5.7

X86

5.7.1.0.8

5.7.1.0.36

8.0.1

X86

8.0.1.1.14

8.0.1.1.46

8.0.2

X86

8.0.2.2.0

8.0.2.2.26

標準版

5.6

X86

5.6.1.0.42

5.6.1.0.42

5.7

X86

5.7.1.0.30

5.7.1.0.30

8.0.1

X86

8.0.1.1.38.2

8.0.1.1.38.2

倚天(ARM)

8.0.1.1.41

8.0.1.1.41

8.0.2

X86

8.0.2.2.21

8.0.2.2.21

說明

您可在PolarDB MySQL版叢集的基本資料頁面的配置資訊地區查看當前叢集的核心版本。

其他限制

在使用庫表恢複功能時,請注意以下不支援的情境:

說明

若您當前叢集不支援使用庫表恢複功能,您可以通過全量恢複的方式將資料恢複到新的叢集,再將資料移轉至原叢集。

注意事項

  • 時間點恢複是指選擇一個特定的時間點,對資料庫表進行恢複操作。恢複後,資料庫表將僅包含該時間點的資料,即此時資料庫中的表資料將與該時間點一致。

  • 當前庫表恢複方式只支援從一級備份恢複,不支援從二級備份恢複。

  • 庫表恢複只會恢複指定的表,操作時請確認已選中所有需要恢複的表。

    說明

    若無法確定所有涉及的表,建議您使用叢集恢複的方式恢複全量叢集。

  • 叢集內的表(包括系統資料表)超過50000張時也可以使用庫表恢複功能。

  • 若選擇非整庫恢複,該庫每次最多支援恢複100張表。若選擇恢複庫,則支援恢複的表數量為該庫下所有的表。

    說明

    若您需要恢複的表數量較多,建議您使用叢集恢複的方式恢複全量叢集。

  • 庫表恢複功能不支援恢複觸發器(Trigger),若原表設定了Trigger,該Trigger不會被恢複。

  • 庫表恢複功能不支援恢複外鍵(Foreign Key),若原表設定了Foreign Key,該Foreign Key不會被恢複。

  • 建議在業務低峰期進行資料恢複。

步驟一、擷取誤操作的時間點

如果您已知誤操作的時間點,可以跳過本步驟。如果您不記得誤操作的具體時間點,可以通過此步驟查看。

方式一:SQL洞察

對於PolarDB MySQL叢集版,若叢集已開通SQL洞察功能,可通過該功能查看審計日誌,擷取誤操作的時間點。

說明 SQL洞察會收費,費用與審計日誌的儲存容量和儲存時間長度有關。關於更多SQL洞察的說明,請參見SQL洞察

SQL洞察功能僅支援查看開通該功能後產生的SQL日誌。因此若叢集未開通SQL洞察,可通過方式二查看誤操作時間點。

方式二:遠程擷取並解析Binlog日誌

  1. 為叢集開啟Binlog。詳細操作步驟,請參見開啟Binlog
    說明 您需要先為叢集開啟Binlog才能查看並擷取Binlog日誌,否則將出現You are not using binary logging錯誤提示。
  2. 在本機伺服器上安裝MySQL,並通過MySQL用戶端串連叢集。詳細操作步驟,請參見串連資料庫叢集。本文以Linux系統為例。
    1
  3. 在已串連叢集的用戶端中執行如下命令查看目的地組群的Binlog檔案清單:
    show binary logs;
    返回結果如下:
    +------------------+-----------+
    | Log_name         | File_size |
    +------------------+-----------+
    | mysql-bin.000005 |      2639 |
    +------------------+-----------+
    1 row in set (0.00 sec)
  4. 在用戶端執行如下命令,遠程擷取Binlog日誌並儲存至本地。
    本文中以Linux系統為例,需先執行exit退出MySQL後,才能遠程擷取Binlog日誌並儲存至本地。2執行如下語句:
    mysqlbinlog -u<使用者名稱> -p<密碼> -h<串連地址> --read-from-remote-server --raw mysql-bin.******
    參數說明樣本值
    -u叢集中的帳號名稱。test_api
    -p以上帳號的密碼。如果此處留空,則在執行此命令後會被要求輸入。TestPwd123
    -h叢集的公網串連地址。
    說明
    • 若您的叢集串連地址使用的是預設的連接埠號碼3306,連接埠號碼可省略不寫,否則需要在串連地址後加上連接埠號碼。
    • 當前僅支援通過主地址或叢集地址(包括預設叢集地址和自訂叢集地址)的公網串連地址遠程擷取Binlog。如何申請公網串連地址,請參見管理串連地址
    test-polardb.rwlb.rds.aliyuncs.com
    --raw表示將擷取到的Binlog檔案按資料原有格式列印,而不會展示解析後的資料。--raw
    mysql-bin.******通過show binary logs;命令擷取的目標Binlog檔案的名字,即Log_namemysql-bin.000005
    樣本:
    mysqlbinlog -utest_api -p -htest-polardb.rwlb.rds.aliyuncs.com --read-from-remote-server --raw mysql-bin.000005
  5. 執行如下命令,通過mysqlbinlog工具查看Binlog記錄檔內容:
    mysqlbinlog -vv --base64-output=decode-rows mysql-bin.****** | more
    說明
    • -vv:查看具體SQL語句及備忘。
    • --base64-output=decode-rows:解析Binlog記錄檔。

    具體的Binlog日誌內容如下圖中紅框所示部分:

    3
  6. 在擷取Binlog記錄檔內容後,可參見解析Binlong日誌進行Binlog日誌解析。

步驟二、開始庫表恢複

  1. 登入PolarDB控制台,在左側導覽列單擊叢集列表,選擇叢集所在地區,並單擊目的地組群ID進入叢集詳情頁。

  2. 在左側導覽列中,選擇配置与管理 > 备份恢复,單擊库(表)恢复

  3. 在彈出的對話方塊中,選擇恢复方式按时间点,並選擇需要恢复至的時間點。

    image

    說明
    • 恢复至的時間點選擇需符合可恢复时间点的限制,同時離該時間點最近一份全量備份組中必須存在需要恢複的表,才能正常使用按时间点恢複功能。可恢復點的範圍與備份設定中的日志备份保留期限有關,預設為7天。

    • 庫表恢複功能根據所佔用的IOPS可分為快速常規安全三種配置,您可以根據實際需求進行選擇。恢複速度配置的預估耗時請參見庫表恢複速度測試資料參考

      • 快速:向當前叢集恢複資料期間,可能佔用大量IOPS(約60%),建議在業務低峰期選擇。

      • 常規【推薦】:向當前叢集恢複資料期間,可能佔用部分IOPS(約30%)。

      • 安全:向當前叢集恢複資料期間,僅佔用少量IOPS(約15%),可能會大幅影響恢複速度。

  4. 需要恢复的库和表地區左側,選中需要恢複的目標庫,並在右側選中目標表。

    1

    說明
    • 若您未指定庫名和表名,則系統會通過在原庫名或原表名後添加_backup的方式,來自動產生新的庫名和表名。如原表為test,則自動產生的新的表名為test_backup

    • 若選中目標庫後但未指定具體的資料表,預設恢複該庫下的所有資料。

  5. 確認已選擇您需要恢複的庫和表後,單擊确定即可。

步驟三、進行資料比對

當庫表恢複完成後,您可以登入叢集進行資料比對,驗證資料。

您可通過DMS登入叢集,也可通過其他用戶端或命令列的方式。本文介紹通過DMS登入叢集進行驗證,關於其他方式,請參考串連資料庫叢集

  1. 在叢集的基本信息頁面右上方,單擊登录数据库

    基本資料

  2. 在彈出的對話方塊中,輸入集群的資料庫帳號資料庫密碼,單擊登入登入頁面

  3. 登入DMS後請重新整理頁面,在左側導覽列中,單擊已登入執行個體

  4. 已登入執行個體列表中,單擊目的地組群名稱,找到並雙擊目標資料庫名稱,即可切換到目標資料庫進行管理。

    1

  5. 尋找到誤操作的資料,確認其是否已恢複到誤操作前,且其他資料也和誤操作發生前一致。