日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL单机版Recycle Bin回收站功能

發(fā)布時間:2023/12/20 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL单机版Recycle Bin回收站功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近調(diào)研了阿里的Recycle Bin回收站功能,可以保證數(shù)據(jù)不丟失。

為了防止開發(fā)或運維人員的誤操作,比如DROP TABLE/DATABASE、TRUNCATE TABLE,這類DDL語句不具有可操作的回滾特性,而導(dǎo)致數(shù)據(jù)丟失,AliSQL 8.0(基于MySQL)新特性支持回收站功能(Recycle Bin),臨時把刪除的表轉(zhuǎn)移到回收站,并保留可設(shè)置的時間,方便用戶找回數(shù)據(jù)。為了方便,提供了?DBMS_RECYCLE package?作為管理接口。

前提條件 MySQL單機版

實例版本如下:

  • RDS MySQL 8.0
  • RDS MySQL 5.7

Recycle Bin參數(shù)

Recycle Bin設(shè)計了如下五個參數(shù)。

參數(shù)說明
loose_recycle_bin是否打開回收站功能,包括session級別和global級別。您可以在控制臺修改參數(shù)。默認值:OFF。
loose_recycle_bin_retention回收站保留時間,單位:秒。默認為604800,即一周。您可以在控制臺修改參數(shù)。
loose_recycle_scheduler是否打開回收站的異步清理任務(wù)線程。您可以在控制臺修改參數(shù)。默認值:OFF。
loose_recycle_scheduler_interval回收站異步清理任務(wù)線程的輪詢間隔,單位:秒。默認為30。暫不開放。
loose_recycle_scheduler_purge_table_print是否打印異步清理現(xiàn)場工作的詳細日志。暫不開放。

Recycle Bin介紹

  • 回收/清理機制
    • 回收機制執(zhí)行TRUNCATE TABLE語句時,將原始表移動到專門的recycle bin目錄中,并在原位置使用相同的結(jié)構(gòu)創(chuàng)建新表。

      說明 僅RDS MySQL 8.0支持。

      執(zhí)行DROP TABLE/DATABASE語句時,只保留相關(guān)的表對象,并移動到專門的recycle bin目錄中。其它對象的刪除策略如下:

      • 如果是與表無關(guān)的對象,根據(jù)操作語句決定是否保留,不做回收。
      • 如果是表的附屬對象,可能會修改表數(shù)據(jù)的,做刪除處理,例如Trigger和Foreign key。 但Column statistics不做清理,隨表進入回收站。
    • 清理機制

      回收站會啟動一個后臺線程,來異步清理超過recycle_bin_retention時間的表對象。在清理回收站表的時候,如果遇到大表,會再啟動一個后臺線程異步刪除大表。

  • 權(quán)限

    RDS MySQL實例啟動時,會初始化一個名為__recycle_bin__的數(shù)據(jù)庫,作為回收站使用的專有數(shù)據(jù)庫。__recycle_bin__是系統(tǒng)級數(shù)據(jù)庫,您無法直接進行修改和刪除。

    對于回收站內(nèi)的表,雖然您無法直接執(zhí)行drop table語句,但是可以使用call dbms_recycle.purge_table('<TABLE>');進行清理。

    說明 賬號在原表和回收站表都需要具有DROP權(quán)限。

  • 回收站表命名規(guī)則

    Recycle Bin會從不同的數(shù)據(jù)庫回收到統(tǒng)一的__recycle_bin__數(shù)據(jù)庫中,所以需要保證目標(biāo)表表名唯一,所以定義了如下命名格式:

"__" + <Storage Engine> + <SE private id>

參數(shù)說明如下。

參數(shù)說明
Storage Engine存儲引擎名稱。
SE private id存儲引擎為每一個表生成的唯一值。例如在InnoDB引擎中就是table id。

獨立回收

回收的設(shè)置只會影響該實例本身,不會影響到binlog復(fù)制到的節(jié)點(備實例、只讀實例和災(zāi)備實例)上。例如我們可以在主實例上設(shè)置回收,保留7天;在備實例上設(shè)置回收,保留14天。

注意事項

  • 如果回收站數(shù)據(jù)庫和待回收的表跨了文件系統(tǒng),執(zhí)行drop table語句將會搬遷表空間文件,耗時較長。
  • 如果Tablespace為General,可能會存在多個表共享同一個表空間的情況,當(dāng)回收其中一張表的時候,不會搬遷相關(guān)的表空間文件。

管理Recycle Bin

AliSQL在DBMS_RECYCLE中定義了兩個管理接口。詳細說明如下:

  • show_tables展示回收站中所有臨時保存的表。命令如下: call dbms_recycle.show_tables();

?參數(shù)如下:

參數(shù)說明
SCHEMA回收站的數(shù)據(jù)庫名。
TABLE進入回收站后的表名。
ORIGIN_SCHEMA原數(shù)據(jù)庫名。
ORIGIN_TABLE原表名。
RECYCLED_TIME回收時間。
PURGE_TIME預(yù)計從回收站刪除的時間。

purge_table

手動清理回收站中的表。命令如下:

call dbms_recycle.purge_table('<TABLE>');
  • TABLE為進入回收站后的表名。
  • 賬號在原表和回收站表都需要具有DROP權(quán)限。

示例:

call dbms_recycle.purge_table('__innodb_1063');

總結(jié)

以上是生活随笔為你收集整理的MySQL单机版Recycle Bin回收站功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。