Skip to content

Latest commit

 

History

History
219 lines (189 loc) · 10.1 KB

web_api_backups_chinese.md

File metadata and controls

219 lines (189 loc) · 10.1 KB

/backups

此 api 提供建立、查詢、刪除及修改以下備份工具:

  1. exporter:將資料備份至指定檔案系統。
  2. importer:從檔案系統中還原備份資料。

建立 exporter

POST /backups

exporter 參數

參數名稱 說明 預設值
name (必填) exporter 名稱
fsSchema (必填) 決定儲存目標為何種檔案系統,例如: local, ftp
hostname (fsSchemaftp, hdfs) 填入目標檔案系統之 hostname
port (fsSchemaftp, hdfs) 填入目標檔案系統之 port
user (fsSchemaftp, hdfs) 填入目標檔案系統之登入 user
password (fsSchemaftp, hdfs) 填入目標檔案系統之登入 password
path (必填) 填入目標檔案系統要儲存的資料夾目錄之目標位置
topics (必填) 填入目標 topics
tasksMax (選填) 設定 task 數量上限 1
size (選填) 寫入檔案目標超過此設定之大小上限時會創建新檔案,並且寫入目標改為新創建之檔案。
檔案大小單位: Bit, Kb, KiB, Mb, etc.
100MB
rollDuration (選填) 如果在超過此時間沒有任何資料流入,會把當下所有已創建之檔案關閉,並在之後有新資料時會創建新檔案並寫入。
時間單位: s, m, h, day, etc.
3s
offsetFrom (選填)Map 格式:"topic.partition.offset.from": "offset"
針對想要的 topic 或是 topicPartition 指定備份 offset 的起點,如果要針對整個 topic 指定需將 partition 留空。ex: {"topicName.offset.from": "101"}

cURL 範例 1

建立一個 exporter,將 topic : "chia01" 的資料從 offset : "101" 開始備份至 local 檔案系統的 /backup 目錄下。 當檔案超過 500MB 創建新檔案,並會在 5m 內沒有資料流入時關閉當下檔案。

curl -X POST http://localhost:8001/backups \
    -H "Content-Type: application/json" \
    -d '{"exporter":[{
    "name": "export_local", 
    "topics": "chia01",
    "fsSchema": "local",
    "tasksMax": "3",
    "path": "/backup",
    "size": "500MB",
    "rollDuration": "5m",
    "offsetFrom": {
      "chia01.offset.from": "101"
    }}]}' 

cURL 範例 2

建立一個 exporter,將

  1. topic : "chia01" partition : "0" 的資料從 offset : "101" 開始
  2. topic : "chia01" partition : "1" 的資料從 offset : "201" 開始

備份至 local 檔案系統的 /backup 目錄下。

curl -X POST http://localhost:8001/backups \
    -H "Content-Type: application/json" \
    -d '{"exporter":[{
    "name": "export_local", 
    "topics": "chia01",
    "fsSchema": "local",
    "tasksMax": "3",
    "path": "/backup",
    "offsetFrom": {
      "chia01.0.offset.from": "101",
      "chia01.1.offset.from": "201"
    }}]}' 

建立 importer

POST /backups

importer 參數

參數名稱 說明 預設值
name (必填) importer 名稱
fsSchema (必填) 決定儲存目標為何種檔案系統,例如: local, ftp, hdfs
hostname (fsSchemaftp, hdfs) 填入目標檔案系統之 hostname
port (fsSchemaftp, hdfs) 填入目標檔案系統之 port
user (fsSchemaftp, hdfs) 填入目標檔案系統之登入 user
password (fsSchemaftp, hdfs) 填入目標檔案系統之登入 password
path (必填) 填入目標檔案系統要讀取的檔案目錄位置
tasksMax (選填) 設定 task 數量上限 1
cleanSourcePolicy (選填) 選擇已讀入之檔案的處理方式
off:不做處理
delete:將檔案移除
archive: 將檔案移至archive.dir(須填入 archive.dir 參數)
off
archiveDir (cleanSourcePolicyarchive) 填入封存已經處理好的檔案目錄位置

cURL 範例 1

建立一個 importer,從 local 檔案系統 /backup 目錄下讀取已備份的檔案,在讀取後將檔案移動至 /finished 目錄中。

curl -X POST http://localhost:8001/backups \
    -H "Content-Type: application/json" \
    -d '{"importer":[{
    "name": "import_local", 
    "fsSchema": "local",
    "tasksMax": "3",
    "path": "/backup",
    "cleanSourcePolicy": "archive",
    "archiveDir": "/finished"
    }]}' 

cURL 範例 2

建立一個 importer,從 ftp 檔案系統 /backup 目錄下讀取已備份的檔案,在讀取後將檔案移除。

curl -X POST http://localhost:8001/backups \
    -H "Content-Type: application/json" \
    -d '{"importer":[{
    "name": "import_local", 
    "fsSchema": "ftp",
    "hostname": "localhost",
    "port": "21",
    "user": "astraea",
    "password": "astraea",
    "tasksMax": "3",
    "path": "/backup",
    "cleanSourcePolicy": "delete"
    }]}' 

查詢所有 exporters 及 importers

Get /backups

cURL 範例

curl -X GET http://localhost:8001/backups

JSON Response 範例

  • name: importer / exporter 名稱
  • configs: importer / exporter 參數
  • state: importer / exporter 狀態
  • tasks: 各個 task 狀態
{
    "importers": [
        {
            "name": "import_local",
            "configs": {
                "connector.class": "org.astraea.connector.backup.Importer",
                "fs.schema": "local",
                "name": "import_local",
                "path": "/backup",
                "tasks.max": "3",
                "clean.source": "archive",
                "archive.dir": "/finished",
                "header.converter": "org.apache.kafka.connect.converters.ByteArrayConverter",
                "key.converter": "org.apache.kafka.connect.converters.ByteArrayConverter",
                "value.converter": "org.apache.kafka.connect.converters.ByteArrayConverter"
            },
            "state": "RUNNING",
            "tasks": {
                "0": "RUNNING",
                "1": "RUNNING",
                "2": "RUNNING"
            }
        }
    ]
}

查詢指定名稱的 exporter 或 importer

Get /backups/{name}

cURL 範例

curl -X GET http://localhost:8001/backups/import_local

更改已存在的 exporter 及 importer 參數

PUT /backups

參數設置方式與建立時的參數相同

cURL 範例

更改一個存在的 exporter,將 "chia02" topic 的資料備份至 local 檔案系統的 /newBackup 目錄下。

curl -X PUT http://localhost:8001/backups \
    -H "Content-Type: application/json" \
    -d '{"exporter":[{
    "name": "export_local", 
    "topics": "chia02",
    "fsSchema": "local",
    "tasksMax": "3",
    "path": "/newBackup"
    }]}' 

刪除 exporter 或 importer

DELETE /backups/{name}

cURL 範例

curl -X DELETE http://localhost:8001/backups/export_local