本文介紹了SQL閃回功能的使用方法。
背景介紹
PolarDB-X SQL閃回功能針對SQL誤操作,提供行級數據的恢復能力。
當您在PolarDB-X上執行誤操作SQL(如INSERT、UPDATE或DELETE) 后,使用SQL閃回,提供相關的誤操作信息,即可從Binlog中找到匹配的事件,生成對應的恢復文件,下載后根據需求恢復數據。
SQL閃回針對誤操作SQL,支持模糊匹配與精確匹配兩種丟失數據的定位策略,以及自動選擇匹配策略的能力,請參見精確匹配與模糊匹配。
面向不同的使用場景,SQL閃回提供回滾SQL與原始SQL兩種方式來恢復數據。
功能優勢
- 操作簡單:輕松配置,填寫少量誤操作SQL信息,即可助您找回丟失的數據。
- 靈活的恢復方式:針對不同的場景,提供回滾SQL與原始SQL兩種能力,恢復方式靈活多樣。
- SQL級精確匹配能力:SQL級的誤操作數據精確匹配能力,提高數據恢復的精準性。
限制與說明
- SQL閃回生成的恢復文件默認保存7天,生成后請盡快下載。
- SQL閃回精確匹配需要滿足如下條件:
- 執行誤操作SQL前,SQL閃回精確匹配能力已開啟。
- 提供誤操作SQL的TRACE_ID信息。
生成恢復文件
定位誤操作SQL
- 在控制臺上選擇說明 如果您未開啟SQL審計,請參見開啟SQL審計與分析進行操作。
。
- 使用SQL審計與分析,定位誤操作SQL的審計記錄。關于如何快速定位誤操作SQL,請參見日志分析。
- 獲取誤操作SQL數據中的
sql_time
、table_name
、sql_type
和trace_id
字段。
精確匹配與模糊匹配
SQL閃回根據您提供的誤操作SQL信息,在Binlog中查找對應的匹配事件,反向生成對應的恢復SQL。受實例版本、參數設置的影響,SQL閃回支持兩種Binlog事件的匹配策略:精確匹配與模糊匹配。具體的匹配策略無需選擇,當未提供TRACE_ID時為模糊匹配,當提供了TRACE_ID且您的實例具備精確匹配能力時為精確匹配,否則會降級為模糊匹配。PolarDB-X SQL閃回會自動檢測,選擇最優的匹配策略,并在閃回任務結束后通知您。
精確匹配針對誤操作SQL,在Binlog中精確匹配出該SQL誤操作的事件,生成恢復文件。
優點:恢復文件中僅包含誤操作SQL誤刪(誤改)的數據,可直接使用,保證數據恢復的精準性與效率。
- PolarDB-X實例版本在5.3.4-15378085版本及以上。
- 執行誤操作SQL前,SQL閃回精確匹配開關已開啟。開啟SQL精確匹配開關后,Binlog中會默認帶上執行SQL的信息,增加一定的存儲空間。
- 提供誤操作SQL的TRACE_ID信息。
針對誤操作SQL的相關信息(執行時間范圍、操作表名、SQL類型等),在Binlog中匹配滿足條件的事件,生成對應的恢復文件。
優點:不依賴實例版本、參數設置等,所有實例都支持。
缺點:無法精準匹配誤刪(誤改)的數據,恢復文件中包含其它業務SQL改動的數據,需要您從中篩選出所需數據。
開啟精確匹配
- 登錄云原生分布式數據庫控制臺,前往指定實例的參數設置頁面,詳情請參見參數設置。
- 確保binlog_rows_query_log_events參數值為ON(默認為ON)。
回滾SQL與原始SQL
為了支持不同的業務場景,PolarDB-X 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。