Featured image of post Nexus 的資料備份遷移與還原

Nexus 的資料備份遷移與還原

Nexus 要遷移到新的伺服器或 Docker 上,就涉及到資料的備份和還原。以下是一個完整的備份還原過程:…

Nexus 要遷移到新的伺服器或 Docker 上,就涉及到資料的備份和還原。以下是一個完整的備份還原過程:

備份

Nexus 倉庫將資料存儲在 blob 存儲中,並將部分元資料和配置信息分別存儲在資料庫中。您必須一起備份 blob 存儲和元資料資料庫。備份策略應涉及同時備份資料庫和 blob 存儲到新位置以保持資料完整。

執行以下步驟進行備份:

1. Blob 存儲備份

必須單獨備份包含 blobs 的檔案系統或物件存儲。

對於文件型 Blob 存儲,請備份存儲 blobs 的目錄。對於典型配置,這將是 $data-dir/blobs

在 nexus 的 bin/nexus.vmoptions 中可以找到 data 資料目錄的存放位置。

進入 data 目錄後,執行打包命令:tar -czvf blobs.tar.gz blobs

對於 S3 Blob 存儲,您可以使用存儲桶版本控制作為備份的替代方案。您也可以將存儲桶鏡像到另一個 S3 存儲桶中。

2. Node ID 備份

每個 Nexus 倉庫實例都與唯一的 ID 相關聯。您必須備份此 ID,這樣在還原或將 Nexus 倉庫從一台伺服器移動到另一台伺服器時,blob 存儲度量(磁碟上 blobs 的大小和數量)和 Nexus 防火牆報告能夠正常運作。保留節點 ID 的檔案位於以下位置(也請參閱目錄):

$data-dir/keystores/node/

進入 keystores 目錄並打包 node 節點,執行 cd keystores && tar -czvf node.tar.gz node

為了使用此備份,請在啟動 Nexus 倉庫之前將這些檔案放置在相同的位置。

3. 資料庫備份

資料庫的備份需要在 Nexus 背景建立 Task 進行。

路徑為:Nexus Repository Manager → System → Tasks → Create task → “Admin – Export databases for backup”

Nexus 的資料備份遷移與還原

選擇 Create task 按鈕進入如下界面↓

Nexus 的資料備份遷移與還原

按照上圖填寫紅字部分的內容。

Nexus 的資料備份遷移與還原

完成後點擊剛才創建的 task,然後點擊 run 按鈕執行備份。

當任務執行時,它會將備份資料導出到 Backup location 欄位中指定的路徑。將包含以下資料庫的 .bak 檔案:

  • Component – 组件,構成存儲庫管理器中所有相關資料
  • Configuration – 配置,常規管理配置,例如計畫任務和電子郵件伺服器配置
  • Security – 安全,所有使用者和存取權限管理內容

所有備份檔案都以基於任務開始時間的時間戳格式顯示。

在備份任務運行時,存儲庫將暫時進入只讀狀態。這個時候不要進行任何操作,請耐心等待。

Nexus 還原

當我們在舊伺服器上完成備份後,將備份的 blobs、node ID 和資料庫複製到新的伺服器上進行還原。

這裡以 Docker 環境下的 Nexus 為例進行還原。Docker 下安裝 Nexus 教程

因為做了 nexus-data 目錄的映射,我們可以直接將資料放在母機的映射目錄中。

1. 還原 Blob 存儲

進入 docker 映射的 nexus-data 目錄,然後進入 blobs 目錄刪除原來的 default。

執行解壓命令:tar -zxvf blobs.tar.gz

2. 還原 Node ID

進入 keystores 目錄並還原 node 目錄,執行 cd keystores && tar -zxvf node.tar.gz

Nexus 的資料備份遷移與還原

3. 還原資料庫

  1. 停止 Nexus 存儲庫。
  2. 刪除目錄 $data-dir/db 中的 component、config、security 目錄。
  3. 將相應的資料庫備份 .bak 檔案複製到 $data-dir/restore-from-backup 以進行恢復(注意:對於版本 3.10.0 或更早版本,恢復目錄位置為 $data-dir/backup)。
  4. 還原與 DB 備份相對應的 Blob Store 備份和 Node ID 檔案。
  5. 重新啟動 Nexus 存儲庫,並驗證 Nexus 存儲庫是否正常運行。
  6. 從 restore-from-backup 目錄中刪除 .bak 檔案。

4. 執行資料修復

恢復完成後,介面上將無法進行搜索。需要進行資料修復。

4.1 透過 blob store 恢復資料庫中的元資料

Nexus Repository Manager → System → Tasks → Create task → “Repair – Reconcile component database from blob store”

Nexus 的資料備份遷移與還原

4.2 重建 Browse

Nexus Repository Manager → System → Tasks → Create task → “Repair – Rebuild repository browse”

Nexus 的資料備份遷移與還原

Nexus Repository Manager → System → Tasks → Create task → “Repair – Rebuild repository search”

Nexus 的資料備份遷移與還原

至此,遷移已完成。

Licensed under CC BY-NC-SA 4.0
使用 Hugo 建立
主題 StackJimmy 設計