日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Native Flashback

Native Flashback功能可以通過SQL語句查詢或恢復指定時間點的數據,保證在誤操作后可以快速獲取歷史數據。

功能說明

數據庫運維過程中的誤操作可能會給業務帶來嚴重的影響,常見的恢復手段Binlog Flashback操作較為復雜、容易出錯且耗時較長,而通過備份集恢復則需要額外的系統資源,在數據量較大時恢復時間不可控。

PolarDB-X標準版在InnoDB引擎上設計和實現了Native Flashback功能,無需復雜的恢復操作,通過簡單的SQL語句即可查詢或恢復誤操作前的歷史數據,節省了大量寶貴的時間,保證業務平穩運行。

前提條件

實例版本要求:PolarDB-X標準版,引擎為MySQL 8.0。

注意事項

  • 僅支持使用InnoDB引擎的表。

  • 需要消耗額外的undo表空間,可以通過innodb_undo_space_supremum_size參數進行配置。

  • Native Flashback的查詢結果取最接近指定時間點的數據,不保證查詢到的數據與指定時間點的數據完全匹配。

  • 暫不支持跨DDL操作的歷史版本數據查詢和恢復。例如您無法通過Native Flashback查詢某個已經被刪除的表的內容。

語法

Native Flashback提供了全新的AS OF語法,通過該語法指定需要回滾的時間。語法規則如下:

 SELECT ... FROM <表名>
  AS OF TIMESTAMP <表達式>;

其中,在表達式中指定回滾的時間,該表達式支持多種形式,示例:

SELECT ... FROM tablename
  AS OF TIMESTAMP '2020-11-11 00:00:00';

SELECT ... FROM tablename
  AS OF TIMESTAMP now();

SELECT ... FROM tablename
  AS OF TIMESTAMP (SELECT now());

SELECT ... FROM tablename
  AS OF TIMESTAMP DATE_SUB(now(), INTERVAL 1 minute);

參數說明

Native Flashback功能開放了如下可配置參數:

參數名稱

說明

innodb_rds_flashback_task_enabled

  • 描述:Native Flashback的功能開關。

  • 命令行格式:--innodb-rds-flashback-enabled=#。

  • 參數范圍:全局參數。

  • 數據類型:Boolean。

  • 默認值:OFF。

  • 取值范圍:[ON|OFF]。

說明

關閉Native Flashback功能時,需要同步將innodb_undo_retention參數設置為0。

innodb_undo_retention

  • 描述:undo記錄的保留時長,超出該時長的undo記錄無法查詢,單位:秒。

  • 命令行格式:--innodb-undo-retention=#。

  • 參數范圍:全局參數。

  • 數據類型:Integer。

  • 默認值:0。

  • 取值范圍:0~4294967295。

    說明

    該參數的值越大,Native Flashback支持的回檔查詢時間越長,同時undo表空間占用的存儲空間也會增加。

    innodb_rds_flashback_task_enabled參數設置為OFF時,需同步將本參數設置為0。

innodb_undo_space_supremum_size

  • 描述:undo表空間可占用的最大磁盤空間,單位:MB。占用空間超過這個值時,忽略innodb_undo_retention參數強制清理undo記錄。

  • 命令行格式:--innodb-undo-space-supremum-size=#。

  • 參數范圍:全局參數。

  • 數據類型:Integer。

  • 默認值:10240。

  • 取值范圍:0~4294967295。

innodb_undo_space_reserved_size

  • 描述:預留的undo表空間大小,單位:MB。在innodb_undo_retention參數非0的情況下,將使用這部分空間盡可能多地保留undo記錄。

  • 命令行格式:--innodb-undo-space-reserved-size=#。

  • 參數范圍:全局參數。

  • 數據類型:Integer。

  • 默認值:0。

  • 取值范圍:0~4294967295。

說明

該參數的值太大可能導致undo歷史記錄過多,影響實例性能。如非必要,請保持該參數為0。

使用示例

# 獲取時間點
MySQL [mytest]> select now();
+---------------------+
| now()               |
+---------------------+
| 2020-10-14 15:44:09 |
+---------------------+
1 row in set (0.00 sec)

# 查看數據
MySQL [mytest]> select * from mt1;
+----+------+
| id | c1   |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
|  4 |    4 |
|  5 |    5 |
+----+------+
5 rows in set (0.00 sec)

# 不帶WHERE條件的更新操作
MySQL [mytest]> update mt1 set c1 = 100;
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5  Changed: 5  Warnings: 0

MySQL [mytest]> select * from mt1;
+----+------+
| id | c1   |
+----+------+
|  1 |  100 |
|  2 |  100 |
|  3 |  100 |
|  4 |  100 |
|  5 |  100 |
+----+------+
5 rows in set (0.00 sec)

# 查詢歷史時間點的數據,成功返回結果
MySQL [mytest]> select * from mt1 AS OF timestamp '2020-10-14 15:44:09';
+----+------+
| id | c1   |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
|  4 |    4 |
|  5 |    5 |
+----+------+
5 rows in set (0.00 sec)

# 如果超出保留的歷史數據范圍,返回失敗
MySQL [mytest]> select * from mt1 AS OF timestamp '2020-10-13 14:44:09';
ERROR 7545 (HY000): The snapshot to find is out of range

# 開始恢復數據
MySQL [mytest]> create table mt1_tmp like mt1; # 創建一個與原表結構相同的臨時表
Query OK, 0 rows affected (0.03 sec)  
MySQL [mytest]> insert into mt1_tmp
             -> select * from mt1 AS OF
             -> TIMESTAMP '2020-10-14 15:44:09'; # 將原表中的歷史數據寫入臨時表 
Query OK, 5 rows affected (0.01 sec) 
Records: 5  Duplicates: 0  Warnings: 0 
MySQL [mytest]> select * from mt1_tmp; # 確認臨時表中的數據是否正確 
+----+------+
| id | c1   |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
|  4 |    4 |
|  5 |    5 |
+----+------+
5 rows in set (0.00 sec) 
MySQL [mytest]> rename table mt1 to mt1_bak,
             -> mt1_tmp to mt1; #(進行本操作需要先停止業務讀寫)更改原表表名為mt1_bak,并將臨時表名改成原表表名,完成數據恢復
Query OK, 0 rows affected (0.02 sec)
MySQL [mytest]> select * from mt1; # 確認恢復完成后的數據 
+----+------+
| id | c1   |
+----+------+
|  1 |    1 |
|  2 |    2 |
|  3 |    3 |
|  4 |    4 |
|  5 |    5 |
+----+------+ 
5 rows in set (0.01 sec)