一文上手圖資料備份恢復工具 NebulaGraph BR

NebulaGraph發表於2023-03-09

作者:NebulaGraph 工程師 Kenshin

NebulaGraph BR 開源已經有一段時間了,為了給社群使用者提供一個更穩、更快、更易用的備份恢復工具,去年對其進行了比較大的重構。NebulaGraph BR(以下簡稱 BR)分為社群版和企業版兩個版本,企業版在社群版功能的基礎上,額外提供了增量備份的能力。而本文將以 BR 社群版為例,簡單介紹 BR 的一些實現細節並透過上手練習來講述如何使用 BR 進行 NebulaGraph 資料的備份恢復。

什麼是 BR

BR 即 Backup & Restore 的簡稱,是一款對 NebulaGraph 叢集資料(包括元資訊和資料資訊)備份到遠端,並利用備份資料對叢集進行恢復的工具。倉庫地址在此:https://github.com/vesoft-inc/nebula-br

什麼是 NebulaGraph Agent

NebulaGraph Agent 是一個只關心本機的無狀態的 RPC 服務,與 metad 通訊,提供備份檔案上傳和下載、服務起停等介面供 BR 呼叫。在開始備份恢復前,需要確保叢集的每個節點上部署了一個 agent,可以透過 SHOW HOSTS AGENT 檢視 agent 的狀態。倉庫地址在此:https://github.com/vesoft-inc/nebula-agent

整體架構如下圖所示:

由於 NebulaGraph Agent 分佈在叢集的各個節點上,在備份恢復時,BR 帶來的 CPU 和網路 IO 開銷會分散到各臺機器上,使其可以輕鬆應對大規模叢集的備份恢復場景。

上手 BR

為了能讓大家更快的熟悉 BR 工具,讓我們從零開始,做一個簡單的實操練習,來體驗目前 nebula-br 支援的所有功能。

環境準備

首先,我們需要建立一個 NebulaGraph 叢集,目前 BR 工具不支援在容器場景執行備份恢復,可以透過下載安裝包的方式在虛擬機器上安裝,參考文件:https://docs.nebula-graph.com.cn/3.3.0/2.quick-start/3.quick-start-on-premise/2.install-nebula-graph/

在叢集建立完成後,可以透過 nebula-console(NebulaGraph 的命令列工具)來連線它。

執行下面的命令,為叢集匯入一個 basketballplayer 的資料集:

(root@nebula) [(none)]> :play basketballplayer
Start loading dataset basketballplayer...
 
Load dataset succeeded!

在成功匯入資料後,執行下面的命令來檢視 basketballplayer 的點邊統計

(root@nebula) [basketballplayer]> submit job stats
+------------+
| New Job Id |
+------------+
| 2          |
+------------+
...
 
(root@nebula) [basketballplayer]> show stats
+---------+------------+-------+
| Type    | Name       | Count |
+---------+------------+-------+
| "Tag"   | "player"   | 51    |
| "Tag"   | "team"     | 30    |
| "Edge"  | "follow"   | 81    |
| "Edge"  | "serve"    | 152   |
| "Space" | "vertices" | 81    |
| "Space" | "edges"    | 233   |
+---------+------------+-------+ 
...

接著,我們下載 BR 工具的二進位制檔案:

wget https://github.com/vesoft-inc/nebula-br/releases/download/v3.3.0/br-3.3.0-linux-amd64

部署 NebulaGraph Agent 服務

在準備好叢集環境後,需要在每臺機器上安裝並啟動 NebulaGraph Agent服務

1. 下載 NebulaGrpah Agent 二進位制檔案

wget https://github.com/vesoft-inc/nebula-agent/releases/download/v0.2.0/agent-0.2.0-linux-amd64

2. 啟動 nebula-agent

nohup ./agent-0.2.0-linux-amd64 --agent="<agent_node_ip>:8888" --meta="<metad_node_ip>:9559" > nebula_agent.log 2>&1 &

該命令會啟動一個監聽 8888 埠的 nebula-agent 服務。--agent 的 port 可以自定義,--meta 的 ip、port 需要與叢集 meta 保持一致。

可以在 nebula-console 中執行下面的命令檢視 agent 的狀態:

(root@nebula) [basketballplayer]> SHOW HOSTS AGENT
+-----------------+------+----------+---------+--------------+---------+
| Host            | Port | Status   | Role    | Git Info Sha | Version |
+-----------------+------+----------+---------+--------------+---------+
| "192.168.8.144" | 8888 | "ONLINE" | "AGENT" | "96646b8"    |         |
+-----------------+------+----------+---------+--------------+---------+
...

當叢集中所有 agent 都 online 後,我們可以執行備份恢復命令:

使用 BR 備份資料

BR 目前支援備份 NebulaGraph 叢集的資料到本地或者 S3 上。為了方便練習,我們採用本地備份的方式,在生產環境,我們推薦使用者將資料備份到 S3 上。備份命令如下:

./br-3.3.0-linux-amd64 backup full --meta "192.168.8.144:9559" --storage "local:///home/nebula/backup"

該命令會對 Meta 服務的地址為 192.168.8.144:9559 的 NebulaGraph 叢集進行全量備份,並將備份檔案儲存到本地的 /home/nebula/backup 目錄下。

檢視備份資訊

備份完成後,我們可以透過下面的命令來檢視備份資訊:

./br-3.3.0-linux-amd64 show  --storage "local:///home/vesoft/backup"

+----------------------------+---------------------+------------------+-------------+------------+
|            NAME            |     CREATE TIME     | SPACES           | FULL BACKUP | ALL SPACES |
+----------------------------+---------------------+------------------+-------------+------------+
| BACKUP_2023_01_18_09_42_10 | 2023-01-18 17:42:10 | basketballplayer | true        | true       |
+----------------------------+---------------------+------------------+-------------+------------+ 

使用 BR 恢復資料

當叢集資料出現問題時,我們可以使用 BR 基於之前備份的資料進行恢復。為了模擬資料丟失場景,可以執行下面的命令將 basketballplayer space 的資料清除。

(root@nebula) [basketballplayer]> DROP SPACE basketballplayer;
Execution succeeded (time spent 2253/3002 us)
...

將 space 刪除後,執行下面命令進行資料恢復。

./br-3.3.0-linux-amd64 restore full --meta "192.168.8.144:9559" --storage "local:///home/vesoft/backup" --name BACKUP_2023_01_18_09_42_10

該命令會讓 BR 從 /home/vesoft/backup/BACKUP_2023_01_18_09_42_10 讀取備份資料,對 Meta 服務地址為 192.168.8.144:9559 的 NebulaGraph 叢集進行恢復。

恢復完成後,我們可以透過 nebula-console 執行以下命令,檢視恢復後的叢集資料。理論上,此時的資料應該與備份之前的資料保持一致。

(root@nebula) [(none)]> use basketballplayer Execution succeeded (time spent 1130/1823 us)
...
 
(root@nebula) [basketballplayer]> submit job stats
+------------+
| New Job Id |
+------------+
| 3          |
+------------+
...
 
(root@nebula) [basketballplayer]> show stats
+---------+------------+-------+
| Type    | Name       | Count |
+---------+------------+-------+
| "Tag"   | "player"   | 51    |
| "Tag"   | "team"     | 30    |
| "Edge"  | "follow"   | 81    |
| "Edge"  | "serve"    | 152   |
| "Space" | "vertices" | 81    |
| "Space" | "edges"    | 233   |
+---------+------------+-------+ 
...

清理備份資料

在恢復完成後,我們可以執行下面的命令清理本次的備份資料。

./br-3.3.0-linux-amd64 cleanup  --meta "192.168.8.144:9559" --storage "local:///home/vesoft/backup" --name BACKUP_2023_01_18_09_42_10

以上為本次 NebulaGraph 備份工具 nebula-br 的介紹。


謝謝你讀完本文 (///▽///)

要來近距離體驗一把 nebula-br 特性麼?NebulaGraph 阿里雲端計算巢現 30 天免費使用中,點選連結來用用圖資料庫 NebulaGraph 和圖資料備份 BR 吧~

想看 nebula-br 原始碼的小夥伴可以前往 GitHub 閱讀、使用、(^з^)-☆ star 它 -> GitHub;和其他的 NebulaGraph 使用者一起交流圖資料庫技術和應用技能,留下「你的名片」一起玩耍呢~

相關文章