■ 江蘇 繆振龍
編者按: Shell腳本一直是Linux運維管理的必備工具之一。通過Shell腳本,管理員可以輕松地完成復雜而重復性的維護工作。
單位機房有一臺Sun小型機,運行Solaris 10系統(tǒng),安裝Oracle 10g數(shù)據(jù)庫。該小型機通過iSCSI協(xié)議連接到遠程存儲服務器。因為業(yè)務數(shù)據(jù)的重要性,需要對數(shù)據(jù)進行日常備份。
為提高備份效率,我們通過一個簡單的shell腳本實現(xiàn),由于白天業(yè)務流量較大,為不影響業(yè)務系統(tǒng)運行,采用crontab在每天晚間自動執(zhí)行備份腳本,將服務器本地數(shù)據(jù)備份到遠程存儲服務器上。經(jīng)過近一周測試,數(shù)據(jù)備份運行正常。

圖1 創(chuàng)建數(shù)據(jù)備份目錄

圖2 數(shù)據(jù)自動備份

圖3 備份腳本內容
1.通 過SecureCRT連接到Sun小型機,創(chuàng)建數(shù)據(jù)備份目錄并賦權,如圖1所示。
2.編寫shell腳本,實現(xiàn)數(shù)據(jù)自動備份,如圖2所示。
3.編寫shell腳本,實現(xiàn)自動備份。
-bash-3.2$ vi oracle_bak.sh
備份腳本內容,如圖3所示。腳本結束后,使用wq保存。為防止Oracle在導出過程中出現(xiàn)異常錯誤,可在業(yè)務空閑期執(zhí)行該腳本測試。確認無誤后,再配置Crontab計劃任務。
在向Crontab添加定時任務前,先設置環(huán)境變量。
-bash-3.2$ EDITOR=vi
-bash-3.2$ export EDITOR
-bash-3.2$ crontab -e
#每天晚間11點自動執(zhí)行腳本備份數(shù)據(jù)
0 23 * * * /export/home/oracle/oracle_bak.sh

圖4 備份情況
配置腳本和Crontab計劃后的第二天,查看前一天的備份情況,如圖4所示。
可以看出,備份過程中沒有出現(xiàn)警告。有的表是通過直接路徑方式導出,通過查閱相關資料。備份如果采用直接導出模式,數(shù)據(jù)將直接從磁盤中讀取到導出session的UGA中,跳過SQL命令處理層,避免了不必要的數(shù)據(jù)轉換,比傳統(tǒng)導出方式提高2至3倍速度。
除了采用將數(shù)據(jù)備份到遠程iSCSI磁盤,我們還可以在內網(wǎng)中搭建NFS服務器,將數(shù)據(jù)備份到NFS共享盤中。兩種方式相比,NFS是基于文件級的存儲,具有較高的可視性。而iSCSI方式則是基于數(shù)據(jù)塊級的存儲,提供數(shù)據(jù)塊集合供用戶訪問。兩種方式孰優(yōu)孰劣,業(yè)界暫無定論。由于業(yè)務需求為備份數(shù)據(jù)庫,從安全性和傳輸性能方面來看,筆者更傾向于采用iSCSI方式。
現(xiàn)在運維技術已經(jīng)越來越向自動化、智能化方向發(fā)展。這就要求運維人員一定要緊跟新時代發(fā)展步伐,不斷提高自身運維能力。
更正聲明:在2019年第4期“基礎設施與數(shù)據(jù)管理”欄目中文章“安裝Kali Linux”的署名更正為“濰坊工程職業(yè)學院信息工程系 趙培元”。