【Jenkins】備份恢復方案實踐


Jenkins備份恢復實施方案

通過Jenkins第三方插件ThinBackup進行,在原有的Jenkins上通過該插件來定時備份數據和插件,再到備份主機上開啟定時任務執行腳本去拉取備份數據,利用插件來選擇備份數據來進行恢復,重啟系統后方可正常使用。

Jenkins備份

Jenkins 有一個備份插件,它可以用來與Jenkins備份重要的配置設置。按照下面給出有一個適當的備份所需的步驟。

1、 管理員登陸172.20.15.36:8080,點擊“系統管理”,然后選擇“插件管理”選項

 

2、在可用Available選項卡上,搜索並勾選“ThinBackup”。點擊“Install without Restart”。完成后,重新啟動Jenkins實例

 

 

3、進入系統管理->ThinBackup→Settings下進行相關參數配置,配置說明如下:

 

 

備份目錄

指定備份目錄。Jenkins進程需要對此目錄的寫訪問權。您可以使用$ {JENKINS_WORKSPACE}等環境變量來指定路徑。

完整備份的備份計划

指定觸發完整備份的計划。使用Cron表示法。即使沒有更改,完整備份也會備份所有文件。

差異備份的備份計划

指定觸發差異備份的計划。使用Cron表示法。差異備份僅存儲自上次完全備份以來修改的數據。如果未檢測到任何更改,則不會創建差異備份。

注意:如果只需要完整備份,則無需指定差異備份計划。由於差異備份依賴於完整備份,因此如果指定差異備份計划,則必須提供完整備份計划。

等到Jenkins / Hudson閑置以執行備份

建議啟用此選項(默認)。然而,許多用戶報告說安靜模式阻止了長時間運行的作業的執行。如果禁用此選項,則無需等待實例的安全狀態即可進行備份。換句話說,備份將立即完成,這可能導致損壞的備份。

在指定的分鍾后強制Jenkins進入完全模式

在指定的時間(分鍾)后強制安靜模式,以強制安全的備份環境。零表示在調度程序觸發備份時直接強制執行完全模式。閱讀下面有關備份過程的更多信息。

最大備份集數

要節省磁盤空間,可以指定存儲的最大備份集數。備份集定義為完整備份及其引用差異備份。在下一次完整備份操作后,將刪除較舊的備份集。這也適用於壓縮備份集。

備份中排除的文件

如果您有特定文件而不想備份,則在此處輸入標識這些文件的正則表達式將阻止它們被備份。名稱與此正則表達式匹配的所有文件都不會被備份。如果不需要,請留空。如果表達式無效,則將忽略該表達式。

備份構建結果

如果啟用此選項,則還將備份構建結果。這可能是很多數據,所以要仔細考慮它。一旦您決定備份構建結果,您還可以選擇備份構建存檔。再次注意這個選項,因為它可能非常耗時並且可能需要大量的磁盤空間!

備份'userContents'

Jenkins提供了一個URL,您可以在其中放置常用數據(例如靜態HTML,工具......)。如果選中此選項,則可以備份所有這些數據。

備份僅構建標記為保留

如果啟用此選項,則僅備份標記為“永久保留此構建”的構建的結果/工件。

清理差異備份

如果啟用此選項,則只要完成新的完整備份,就會刪除所有差異備份。

將舊備份移動到ZIP文件

如果選中此選項,則每當執行新的完整備份時,所有舊備份集都將移動到ZIP文件。每個ZIP文件將包含一個備份集,即一個完整備份和引用它的任何差異備份。文件名將標識包含備份的時間范圍(即完整備份的時間戳和最新差異備份的時間戳)。

注意: “ 最大備份集數”設置也適用於由thinBackup創建的備份ZIP文件。

注意:如果選中“ 清理差異備份 ”,則在完成壓縮之前將執行diff清理,因此ZIP文件中不會進行差異備份。

 

以上配置表示每天凌晨12點自動完整備份到設置的目錄/Trendy/jenkins_backup下
備份內容包括:Backup next build number file、Backup ‘userContent’folder、
Backup plugins archives、 Clean up differential backups;

此外可以手工執行備份

點擊“Backup Now”,此時頁面等待備份響應,實際上jenkins在后台運行備份程序,可以通過備份目錄中查看,已經生成備份目錄類似“FULL-2018-12-25_00_00”

通過備份進行恢復Jenkins

一、Jenkins恢復環境部署

假設現有的Jenkins已經損壞不能正常使用;需要通過最近的完整備份恢復Jenkins服務;

1、首先在備份主機上部署與原主機上相同版本的Jenkins(按照原主機方式安裝)

2、備份主機開啟定時任務去執行腳本從原主機上拉取完整備份

3、在備份主機Jenkins上利用ThinBackup插件選擇最近的備份數據進行恢復

4、重啟備份主機上Jenkins服務,正常使用系統

二、備份主機配置(拉取原主機備份文件)

1、拉取備份代碼腳本

172.50.10.16主機/home/jenkins/jenkins_backup.sh(root用戶權限賦予777權限)

#!/bin/bash

backup_path=/home/jenkins/master_backup/

backup_file_filter=*"`date +%Y-%m-%d`"*

jenkins_home_directory=/Trendy/jenkins_backup/

jenkins_server_ipaddress=172.20.15.36

jenkins_server_ssh_username=root

ssh_host="root@172.20.15.36"

 

# which files and directory backup

for i in `ssh $ssh_host find /Trendy/jenkins_backup/ -name ${backup_file_filter}`

do

    backup_files[j]=$i

    j=`expr $j + 1`

done

echo ${backup_files[0]}

echo ${backup_file_filter}

backup_files_num=${#backup_files[@]}

 

# do backup files copy

for (( i = 0; i < $backup_files_num; i++ )); do

   scp -r $jenkins_server_ssh_username@$jenkins_server_ipaddress:${backup_files[i]}  $backup_path

done

 

2、SSH免密登陸配置

腳本中需要172.50.10.16遠程登陸172.20.15.36,實際連接的時候會讓你輸入密碼,但執行腳本的時候無法干預,就需要設置SSH免密登陸。

  • 172.50.10.16機器執行ssh-keygen -t rsa一路回車后生成公鑰id_rsa.pub
  • 172.20.15.36上將16主機的公鑰添加到/root/.ssh/authorized_keys

         

 

3、172.50.10.16上開啟定時任務去執行腳本拉取備份文件

crontab -e添加00 01 * * * /home/jenkins/jenkins_backup.sh(表示1點自動執行腳本)

三、配置ThinBackup並恢復

1、登陸172.50.10.16:8080備份主機,進入系統管理->ThinBackup頁面,進行thinnBackup Configuration配置,配置Backup directory為主機獲取存放備份文件路徑

 

 

2、返回ThinBackup, 點擊Restore,如圖鈎選上
Restore next build number file(build文件)
Restore plugins(還原插件)
點擊Restore 同樣需要等待一段時間;可以查看/var/lib/jenkins目錄的變化;

 

3、重啟備份主機Jenkins服務,查看系統恢復數據,項目、用戶、插件等信息都恢復存在

 

測試Jenkins使用

選擇某個工程進行build,會需要重新配置憑證,修改腳本中鑒權ID等(遇到問題按照主機上操作修改相關配置,基本都是環境更改后鑒權和工具安裝問題)

優化自動刪除15天前的備份文件

在原主機和備份主機上每天都會保存配置文件和備份文件,長時間運行會導致空間占用過大,所以添加在兩台主機上分別添加腳本AutoClean_backup.sh去刪除15天之前的備份文件,該腳本每個月15號通過定時任務執行去清理

 
#!/bin/sh
BAK_HOME="/Trendy/jenkins_backup"

keepNum=13
fileNum=$(find ${BAK_HOME} -mtime +1 -name "FULL*" | wc -l)

echo "${fileNum}"

for file in $(find ${BAK_HOME} -mtime +1 -name "FULL*"); do
if test $[fileNum] -gt $[keepNum];then
rm -rf ${file}
fileNum=${fileNum}-1
echo "delete backup file"
else
echo "do no thing"
fi
done


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM