Linux備份策略(第二版),linux第二版
備份策略
備份思想
一、系統潛在的威脅
Ø 系統硬體故障
Ø 軟體故障
Ø 電源故障
Ø 使用者的誤操作
Ø 人為破壞
Ø 緩衝中的內容沒有及時的寫入磁碟
Ø 自然災害
二、備份介質的選擇
備份介質:硬碟[比較常見的是通過Linux檔案伺服器] 磁帶[常用] 抽取式存放裝置裝置
一般在選擇備份介質時,要從可靠性、速度和價格之間進行權衡,一般選擇:硬碟,磁帶機
三、備份策略
Ø 完全備份
每隔一段時間對系統進行一次完全的備份, 這樣在備份時間間隔內,一旦系統發生故障 使得資料丟失時,就可以用上一次的備份資料恢複到上一次備份時的情況。
Ø 增量備份
首先進行一次完全備份,然後每隔一段較短 的時間進行一次備份,但是僅僅備份每個短 時期內更改的內容。
實際應用中,兩者混合使用。
四、備份的分類
Ø 系統備份
實現對作業系統和應用程式的備份
目的:盡量在系統崩潰以後能快速簡單完全地恢複 系統的運行
主要備份/etc、/boot 、/var/log、/usr/local等,一般只有當系統內容發生變化時才進行
Ø 使用者備份
實現對使用者檔案的備份 /home ,使用者的資料變動頻繁
通常採用增量備份策略進行
五、記錄更改 ,建立備份日誌
記錄系統的更改:記錄對系統進行了哪些修改的詳細描述及為什麼要進行修改
建立備份日誌:使用備份日誌表格
妥善保管
【備份日誌表格範例】
機器名稱、IP地址、存放位置
備份時間
備份介質及其編號
備份的檔案系統
備份的目錄和檔案
使用的備份命令
備份人員及其他
執行個體分析
一、cp命令備份舉例
cp -Rpu [備份目錄] [目標目錄]
-R備份的是目錄
-p保持備份目錄的屬性
-u增量備份
遠程備份:scp
E.g.
cp /etc/inittab /backup/inittab_2014092301.bak#最後兩個數字代表當天修改次數,但此時源檔案與備份檔案的時間值不統一
cp -Rup /etc/ /backup/etc_2014092301.bak
二、tar命令備份舉例[預設儲存檔案屬性]
備份
1、tar -zcf /backup/sys_20110303.tar.gz /etc /boot #備份/etc與/boot目錄,可同時打包多個目錄
2、 tar -zcf backup_user_20110303.tar.gz /etc/passwd /etc/shadow /etc/group /etc/gshadow #對/etc目錄下指定檔案進行備份
3、tar -ztf backup_user_20110303.tar.gz #在不解包的情況下,查看備份包中的檔案
還原
1、tar -zxf /backup/etc_20110303.tar.gz #還原/etc目錄,預設還原到打包檔案來源目錄,-C可以指定還原目錄
tar -zxvf backup_user_2014092101.tar.gz -C /backup
2、tar -zxf backup_user_20110303.tar.gz etc/group #只恢複備份中的指定檔案
#在目前的目錄下建立etc目錄,然後將group檔案恢複到裡面去,注意etc目錄前沒有/符號,tar包裡查看到的檔案是怎麼寫的,恢複是就要怎樣寫!
備份最佳實務
1.tar -rf backup_user_20110303.tar /etc/default/useradd /etc/login.defs
將/etc/default/useradd、/etc/login.defs的內容追加到backup_user_20110303.tar
2.tar -uf backup_user_20110303.tar /etc/passwd
將/etc/passwd目錄中修改過的內容追加到備份檔案
【* -r與-u選項只能針對tar包使用,不能用於壓縮檔】
3.tar -zcf /backup/etc_$(date +%F).tar.gz /etc
為備份檔案名添加時間(年月日)
4.tar -zcf /backup/etc_$(date +%Y.%m.%d-%H:%M).tar.gz /etc
添加年.月.日-小時:分鐘
備份流程
1、備份的意識
2、備份分區ro或unmount
mount -o remount,ro /backup#以唯讀方式掛載該分區
umont /backup#直接將備份分區卸載掉
3、資料壓縮
4、校正 md5sum -c
5、加密處理 gnupg2非對稱金鑰密碼編譯
Linux下選擇什備份策略
可行,很恰當 ,tar這東西就是備份用的。
不過注意備份迴圈,比如一周做一次全備,每天增量,備份曆史保留1個月。
linux 系統怎備份,系統日誌怎備份?
本文是在linux下,mysql 4.1.14版本下測試的,經過適當修改可能適合mysql 4.0,5.0及其其他版本.
本文適合於沒有啟動複製功能的mysql,如果啟動了複製,可能不需要採取這種備份策略或者需要修改相關參數.
每個人的備份策略都可能不同,所以請根據實際情況修改,做到舉一反三,不要照搬照抄,可能會造成不必要的損失.
希望你明白這個指令碼要幹什麼工作!
指令碼描述
每7天備份一次所有資料,每天備份binlog,也就是增量備份.
(如果資料少,每天備份一次完整資料即可,可能沒必要做增量備份)
作者對shell指令碼不太熟悉,所以很多地方寫的很笨 :)
開啟 bin log
在mysql 4.1版本中,預設只有錯誤記錄檔,沒有其他日誌.可以通過修改配置開啟bin log.方法很多,其中一個是在/etc/my.cnf中的mysqld部分加入:
[mysqld]
log-bin
這個日誌的主要作用是增量備份或者複製(可能還有其他用途).
如果想增量備份,必須開啟這個日誌.
對於資料庫操作頻繁的mysql,這個日誌會變得很大,而且可能會有多個.
在資料庫中flush-logs,或者使用mysqladmin,mysqldump調用flush-logs後並且使用參數delete-master-logs,這些記錄檔會消失,併產生新的記錄檔(開始是空的).
所以如果從來不備份,開啟日誌可能沒有必要.
完整備份的同時可以調用flush-logs,增量備份之前flush-logs,以便備份最新的資料.
完整備份指令碼
如果資料庫資料比較多,我們一般是幾天或者一周備份一次資料,以免影響應用運行,如果資料量比較小,那麼一天備份一次也無所謂了.
#!/bin/sh
# mysql data backup script
# by scud
# 2005-10-30
#
# use mysqldump --help,get more detail.
#
BakDir=/backup/mysql
LogFile=/backup/mysql/mysqlbak.log
DATE=`date +%Y%m%d`
echo " " >> $LogFile
echo " " >> $LogFile
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
cd $BakDir
DumpFile=$DATE.sql
GZDumpFile=$DATE.sql.tgz
mysqldump --quick --all-databases --flush-logs
--delete-master-logs --lock-all-tables
> $DumpFile
echo "Dump Done" >> $LogFile
tar czvf $......餘下全文>>