全部產品
Search
文件中心

Object Storage Service:Snapshot(通過快照備份和恢複資料)

更新時間:Nov 19, 2024

當您希望對OSS-HDFS服務的資料進行備份,在資料發生錯誤、被誤刪除時,將資料恢複至可用狀態,您可以使用Snapshot命令建立快照。OSS-HDFS服務的快照功能在使用方式上與HDFS的快照功能完全相容,同時支援目錄層級的操作。

重要

此功能目前尚處於試用和小規模使用階段,不建議大規模生產使用。

前提條件

步驟1:配置環境變數

  1. 串連ECS執行個體。具體操作,請參見串連ECS執行個體

  2. 進入已安裝的JindoSDK JAR包下的bin目錄。

    以下以jindosdk-x.x.x-linux為例,如使用其他版本的JindoSDK,請替換為對應的JAR包名稱。

    cd jindosdk-x.x.x-linux/bin/
    說明

    x.x.x表示JindoSDK JAR包版本號碼。

  3. 授予bin目錄下的jindo-util檔案的讀、寫、執行的許可權。

    chmod 700 jindo-util
  4. jindo-util檔案重新命名為jindo

    mv jindo-util jindo
  5. 建立設定檔jindosdk.cfg,然後在設定檔中添加以下配置項。

    [common]保持以下預設配置。
    logger.dir = /tmp/jindo-util/
    logger.sync = false
    logger.consolelogger = false
    logger.level = 0
    logger.verbose = 0
    logger.cleaner.enable = true
    hadoopConf.enable = false
    
    [jindosdk]自訂以下配置項。
    <!-- 以下以杭州地區為例,其他地區請根據實際情況替換。 -->
    fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com
    <!-- 配置訪問OSS-HDFS服務的AccessKeyId、AccessKeySecret。 -->
    fs.oss.accessKeyId = LTAI********    
    fs.oss.accessKeySecret = KZo1********                                        
  6. 設定環境變數。

    export JINDOSDK_CONF_DIR=<JINDOSDK_CONF_DIR>

    <JINDOSDK_CONF_DIR>填寫jindosdk.cfg 設定檔所在的絕對路徑。

步驟2:執行快照相關操作

開啟快照功能

假設您擁有名為examplebucket的Bucket,並在該Bucket下建立了名為exampledir的目錄。當您需要為該目錄開啟快照功能時,請通過JindoSDK的Shell命令列工具執行如下命令:

./jindo admin -allowSnapshot -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir

關於配置Endpoint的具體操作,請參見JindoFS服務Endpoint

建立快照

在examplebucket下的exampledir目錄開啟快照功能後,您需要執行以下操作:

  1. 建立子目錄和檔案。

    在exampledir目錄下建立子目錄dir1以及dir2以及檔案file1

    # 建立子目錄dir1。
    hdfs dfs -mkdir oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1
    # 建立子目錄dir2。
    hdfs dfs -mkdir oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir2
    # 建立檔案file1。
    hdfs dfs -touchz oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/file1.txt
    # 建立檔案file2。
    hdfs dfs -touchz oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/file2.txt
  2. 為exampledir建立名為S1的快照。

    hdfs dfs -createSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1

重新命名快照

例如,您需要將已建立的快照S1重新命名為S2,請通過HDFS的Shell命令列工具執行以下命令:

hdfs dfs -renameSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1 S2

訪問快照中的目錄和檔案

當您需要訪問examplebucket根目錄exampledir的子目錄dir1,請通過HDFS的Shell命令列工具執行以下命令:

hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1

考慮到此前您已為examplebucket根目錄exampledir建立了快照S1,因此訪問快照S1的行為等同於訪問根目錄exampledir。請通過HDFS的Shell命令列工具執行以下命令訪問快照S1中的目錄和檔案:

hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/.snapshot/S1/dir1

對比快照內容

當您需要對比exampledir目錄下快照S1與快照S2存在的差異時,請通過JindoSDK的Shell命令列工具執行如下命令:

./jindo admin -snapshotDiff \
                -dlsUri -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir \
                -fromSnapshot S1 \
                -toSnapshot S2

通過快照恢複資料

快照功能通常用於資料備份和恢複。通過快照功能,可以及時恢複誤刪除的資料。假設您誤刪除了examplebucket根目錄exampledir下的檔案dir1:

hdfs dfs -rm -r oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1

考慮到此前您已為examplebucket根目錄exampledir建立了快照S1,此時您可以通過HDFS的Shell命令列工具執行以下命令恢複誤刪除資料:

hdfs dfs -cp oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/.snapshot/S1/dir1  oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir

完成資料恢複後,您可以通過以下命令查看誤刪除的檔案夾或者檔案:

hdfs dfs -ls oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir/dir1

刪除快照

例如,您不再需要保留examplebucket根目錄exampledir建立的快照S1或者重新命名後的快照S2,請通過HDFS的Shell命令列工具執行如下命令刪除快照S1以及S2。

  • 刪除快照S1

    hdfs dfs -deleteSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S1
  • 刪除快照S2

    hdfs dfs -deleteSnapshot oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir S2

關閉快照功能

當您不再需要使用快照功能時,請通過JindoSDK的Shell命令列工具執行如下命令關閉快照功能:

./jindo admin -disallowSnapshot -dlsUri oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/exampledir
重要

關閉快照功能前,請確保已刪除目標路徑下的所有快照。否則,關閉快照功能將會報錯。