背景介紹
PolarDB-X 1.0 SQL閃回針對SQL誤操作,提供行級數據的恢復能力。
當您在PolarDB-X 1.0上執行誤操作SQL(如INSERT、UPDATE或DELETE) 后,使用SQL閃回,提供相關的誤操作SQL信息,即可從BINLOG中找到匹配的事件,生成對應的恢復文件,下載后根據需求恢復數據。
SQL閃回針對誤操作SQL,支持模糊匹配與精確匹配兩種丟失數據的定位策略,以及自動選擇匹配策略的能力,請參見名詞解釋。
面向不同的使用場景,SQL閃回提供回滾SQL與原始SQL兩種方式來恢復數據。
功能優勢
操作簡單:輕松配置,填寫少量誤操作SQL信息,即可助您找回丟失的數據。
快速輕量:不依賴RDS的備份策略,只需在誤操作SQL執行前開啟RDS日志備份即可快速恢復誤操作數據。
靈活的恢復方式:針對不同的場景,提供回滾SQL與原始SQL兩種能力,恢復方式靈活多樣。
SQL級精確匹配能力:SQL級的誤操作數據精確匹配能力,提高數據恢復的精準性。
限制與說明
SQL閃回依賴RDS BINLOG保存時間,請開啟RDS日志備份。RDS BINLOG存在保存時限,誤操作數據后請盡快使用SQL閃回生成恢復文件。
SQL閃回生成的恢復文件默認保存7天,生成后請盡快下載。
SQL閃回精確匹配需要滿足如下條件:
PolarDB-X 1.0實例版本在5.3.4-15378085版本及以上。關于版本信息,詳情請參見實例版本概覽。
PolarDB-X 1.0數據庫使用的RDS是5.6及以上版本。
執行誤操作SQL前,SQL閃回精確匹配開關已開啟。
提供誤操作SQL的TRACE_ID信息。
為了保證數據恢復的精準性,PolarDB-X 1.0對于在5.3.4-15378085版本及以上實例新建的數據庫,默認開啟精確匹配的開關。開啟后,RDS BINLOG中會默認帶上執行SQL的信息,增加一定的RDS存儲空間。如您需要使用精確匹配的能力,建議升級PolarDB-X 1.0后開啟,詳情請參見開啟精確匹配。
生成恢復文件
如果您之前未使用過SQL閃回功能,可以任選一條樣例SQL,按照下文的操作步驟試用,觀察生成的恢復文件,有助于更好地理解SQL閃回。
登錄PolarDB分布式版控制臺,選擇指定地域。
選擇實例所在地域。
在實例列表頁面單擊實例名稱。
在左側導航欄中單擊SQL閃回,進入SQL閃回頁面。
按照操作提示,填寫誤操作SQL的基本信息,包括數據庫、誤操作SQL執行的時間范圍、表名、TRACE_ID,SQL類型。關于如何獲取誤操作SQL的相關信息,請參見定位誤操作SQL。
參數說明:
SQL執行時間范圍:誤操作SQL執行的大致時間范圍,開始時間早于誤操作SQL開始執行時間,結束時間晚于誤操作SQL執行結束時間。為了保證恢復的效率,建議時間范圍盡可能精確,限定在5分鐘范圍內。
TRACE_ID:PolarDB-X 1.0會為每條執行的SQL分配唯一的TRACE_ID,誤操作SQL的TRACE_ID值可以通過PolarDB-X 1.0 SQL審計獲取。
單擊預檢按鈕,檢查提供的時間范圍內,RDS BINLOG是否存在,如上圖中2所示。
如果您提供的時間范圍內,已不存RDS BINLOG,則提示預檢失敗,無法恢復數據。
如果您提供的時間范圍內,存在RDS BINLOG,則預檢通過。
選擇恢復方式,支持選擇回滾SQL和原始SQL。關于恢復方式的選擇,詳情請參見回滾SQL與原始SQL。
單擊生成SQL按鈕,即可生成SQL閃回任務。SQL閃回頁面會展示當前實例運行的SQL閃回任務狀態。
SQL閃回任務完成后,會顯示該任務是否是精確匹配,實際恢復的數據行數等信息。 您可以單擊下載按鈕下載對應的恢復文件,進行數據恢復。
恢復文件默認保存7天,請盡快下載。
定位誤操作SQL
開啟精確匹配
前提條件:您的PolarDB-X 1.0實例版本需為5.3.4-15378085及以上,如果低于該版本,建議升級后開啟。
登錄PolarDB分布式版控制臺,前往指定實例的參數設置頁面,詳情請參見參數設置。
修改對應數據庫的SQL閃回精確匹配開關的參數值為ON。
名詞解釋
SQL閃回根據您提供的誤操作SQL信息,在RDS BINLOG中查找對應的匹配事件,反向生成對應的恢復SQL。受實例版本,參數設置的影響,SQL閃回支持兩種BINLOG事件的匹配策略:精確匹配與模糊匹配。具體的匹配策略無需選擇,PolarDB-X 1.0 SQL閃回會自動檢測,選擇最優的匹配策略,并在閃回任務結束后通知您。
精確匹配
針對誤操作SQL,在RDS BINLOG中精確匹配出該SQL誤操作的事件,生成恢復文件。
優點:恢復文件中僅包含誤操作SQL誤刪(誤改)的數據,可直接使用,保證數據恢復的精準性與效率。
缺點:需要滿足以下的條件:
PolarDB-X 1.0實例版本在5.3.4-15378085版本及以上。
PolarDB-X 1.0數據庫使用的RDS是5.6及上版本。
執行誤操作SQL前,SQL閃回精確匹配開關已開啟。開啟SQL精確匹配開關后,RDS BINLOG中會默認帶上執行SQL的信息,增加一定的RDS存儲空間。
提供誤操作SQL的TRACE_ID信息。
說明SQL閃回精確匹配開關對于5.3.4-15378085版本及以上的新建數據庫默認開啟,低版本實例建議升級后手動開啟,詳情請參見開啟精確匹配。
模糊匹配
針對誤操作SQL的相關信息(執行時間范圍、操作表名、SQL類型等),在RDS BINLOG中匹配滿足條件的事件,生成對應的恢復文件。
優點:不依賴實例版本、參數設置等,所有實例都支持。
缺點:無法精準匹配誤刪(誤改)的數據,恢復文件中包含其它業務SQL改動的數據,需要您從中篩選出所需數據。
回滾SQL與原始SQL
為了支持不同的業務場景,PolarDB-X 1.0 SQL閃回提供生成回滾SQL與生成原始SQL兩種恢復方式,您在生成恢復SQL文件前,需要根據使用場景,選擇對應的恢復方式。
下圖給出了SQL閃回針對一條誤操作,生成的回滾SQL與原始SQL示例。
回滾SQL
逆序遍歷BINLOG中的匹配事件,對INSERT、UPDATE、DELETE事件進行逆反操作,生成的SQL。
INSERT逆反等價于DELETE。
DELETE逆反等價于REPLACE。
UPDATE逆反等價于UPDATE SET value = 變更前。
使用方式:在原表執行,對現有數據進行覆蓋性恢復。
適用場景:當需要恢復的數據沒有沖突或者接受部分沖突數據被覆蓋,建議生成回滾SQL。
原始SQL
順序遍歷BINLOG中的匹配事件,對INSERT、UPDATE、DELETE事件進行全記錄的鏡像構造處理,生成的SQL。
INSERT鏡像等價于INSERT。
DELETE鏡像等價于INSERT。
UPDATE鏡像等價于INSERT變更前的值。
使用方式:在臨時表執行,寫入誤操作前的原始數據,與現有數據進行對比,分析沖突后決定最終數據。
適用場景:當需要恢復的數據與當前數據存在沖突時,建議生成原始SQL。