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”
選擇 Create task
按鈕進入如下界面↓
按照上圖填寫紅字部分的內容。
完成後點擊剛才創建的 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
。
3. 還原資料庫
- 停止 Nexus 存儲庫。
- 刪除目錄 $data-dir/db 中的 component、config、security 目錄。
- 將相應的資料庫備份 .bak 檔案複製到 $data-dir/restore-from-backup 以進行恢復(注意:對於版本 3.10.0 或更早版本,恢復目錄位置為 $data-dir/backup)。
- 還原與 DB 備份相對應的 Blob Store 備份和 Node ID 檔案。
- 重新啟動 Nexus 存儲庫,並驗證 Nexus 存儲庫是否正常運行。
- 從 restore-from-backup 目錄中刪除 .bak 檔案。
4. 執行資料修復
恢復完成後,介面上將無法進行搜索。需要進行資料修復。
4.1 透過 blob store 恢復資料庫中的元資料
Nexus Repository Manager → System → Tasks → Create task → “Repair – Reconcile component database from blob store”
4.2 重建 Browse
Nexus Repository Manager → System → Tasks → Create task → “Repair – Rebuild repository browse”
4.3 重建 Search
Nexus Repository Manager → System → Tasks → Create task → “Repair – Rebuild repository search”
至此,遷移已完成。