新聞中心
在Linux系統(tǒng)中,數(shù)據(jù)庫(kù)的備份是必須要做的一件事情,因?yàn)閿?shù)據(jù)庫(kù)的數(shù)據(jù)是公司或組織最重要的資產(chǎn)之一。如果數(shù)據(jù)庫(kù)的數(shù)據(jù)遭到損壞或丟失,可能會(huì)給公司或組織帶來(lái)很大的損失,甚至威脅到公司或組織的生存。因此,在Linux系統(tǒng)中,實(shí)現(xiàn)數(shù)據(jù)庫(kù)備份是非常重要的工作之一。本文將探討。

一、備份策略
在制定備份策略時(shí),需要考慮以下因素:
1.備份類型
全備份、增量備份和差異備份是備份的三種類型。全備份是將整個(gè)數(shù)據(jù)庫(kù)備份到指定的位置,增量備份僅備份與上一次備份后更改的數(shù)據(jù),而差異備份則備份與全備份之間更改的數(shù)據(jù)。根據(jù)備份類型的不同,備份腳本的實(shí)現(xiàn)方法也有所不同。
2.備份頻率
備份頻率取決于數(shù)據(jù)庫(kù)的重要程度和數(shù)據(jù)更改的速度。對(duì)于一些重要的數(shù)據(jù)庫(kù),建議每天備份一次,而對(duì)于數(shù)據(jù)更新比較慢的數(shù)據(jù)庫(kù),則可以每周進(jìn)行備份。
3.備份時(shí)間
備份時(shí)間需要安排在數(shù)據(jù)庫(kù)負(fù)荷較輕的時(shí)間段,例如夜間或周末。在備份時(shí),更好關(guān)閉數(shù)據(jù)庫(kù)的寫入功能,以防止備份過(guò)程中數(shù)據(jù)的更改。
二、備份腳本的實(shí)現(xiàn)方法
在Linux系統(tǒng)中,備份腳本可以使用Shell腳本實(shí)現(xiàn)。以下是備份腳本的實(shí)現(xiàn)步驟:
1.創(chuàng)建備份目錄
在Linux系統(tǒng)中,備份目錄是用于存儲(chǔ)備份文件的目錄,需要在系統(tǒng)中創(chuàng)建??梢允褂靡韵旅顒?chuàng)建備份目錄:
$ mkdir /backup/db_backup
其中,/backup/db_backup是備份目錄的路徑。
2.編寫備份腳本
備份腳本可以使用Shell腳本實(shí)現(xiàn)。以下是備份腳本的主要實(shí)現(xiàn)步驟:
a.設(shè)置備份文件名
備份文件名應(yīng)包含備份日期和時(shí)間。例如,使用以下命令設(shè)置備份文件名:
filename=“db_backup_‘date +%Y%m%d_%H%M%S’.sql”
其中,date +%Y%m%d_%H%M%S是用于獲取當(dāng)前時(shí)間的命令。
b.備份數(shù)據(jù)庫(kù)
通過(guò)mysqldump命令將數(shù)據(jù)庫(kù)備份到備份目錄中,例如:
mysqldump -h localhost -u username -ppassword databasename > /backup/db_backup/$filename
其中,localhost是數(shù)據(jù)庫(kù)服務(wù)器的地址,username和password是登錄數(shù)據(jù)庫(kù)時(shí)的用戶名和密碼,databasename是需要備份的數(shù)據(jù)庫(kù)的名稱。
c.壓縮備份文件
使用tar命令將備份文件壓縮到一個(gè)壓縮文件中,例如:
tar czvf /backup/db_backup/$filename.tar.gz /backup/db_backup/$filename
其中,$filename.tar.gz是壓縮文件的名稱。
d.刪除備份文件
為防止備份文件占用過(guò)多磁盤空間,可以設(shè)置一個(gè)定期刪除備份文件的任務(wù)。可以使用以下命令刪除備份文件:
find /backup/db_backup/ -mtime +7 -type f -name “*.tar.gz” -exec rm -f {} \;
其中,-mtime +7表示刪除7天之前的文件,-type f表示只刪除文件類型的文件,-name “*.tar.gz”表示只刪除tar.gz格式的文件。
三、定時(shí)備份腳本
為了方便管理,可以將備份腳本設(shè)置成定時(shí)任務(wù),自動(dòng)執(zhí)行。可以使用以下命令編輯定時(shí)任務(wù):
crontab -e
然后添加以下內(nèi)容:
0 3 * * * sh /backup/db_backup.sh
其中,0代表每小時(shí)的第0分鐘執(zhí)行,3代表凌晨3點(diǎn)執(zhí)行,/backup/db_backup.sh是備份腳本的路徑。
四、
本文介紹了,包括備份策略、備份腳本的編寫和定時(shí)備份任務(wù)的設(shè)置。備份數(shù)據(jù)庫(kù)是數(shù)據(jù)保護(hù)的基礎(chǔ),能夠保證數(shù)據(jù)庫(kù)的數(shù)據(jù)安全性。因此,定期備份數(shù)據(jù)庫(kù)是非常必要的工作。如果您能夠合理制定備份策略,并利用腳本自動(dòng)化備份,相信能夠有效地保護(hù)數(shù)據(jù)庫(kù)的安全。
相關(guān)問(wèn)題拓展閱讀:
- 菜鳥(niǎo)求助:linux下oracle數(shù)據(jù)庫(kù)自動(dòng)備份腳本,腳本可實(shí)現(xiàn)數(shù)據(jù)庫(kù)自動(dòng)備份功能,并刪除三天前的備份
- linux自動(dòng)備份網(wǎng)站和數(shù)據(jù)庫(kù),到另外服務(wù)器上,為當(dāng)前用戶創(chuàng)建定時(shí)任務(wù)
菜鳥(niǎo)求助:linux下oracle數(shù)據(jù)庫(kù)自動(dòng)備份腳本,腳本可實(shí)現(xiàn)數(shù)據(jù)庫(kù)自動(dòng)備份功能,并刪除三天前的備份
Linux下備份oracle數(shù)據(jù)庫(kù)shell腳本僅供參考,需根據(jù)情況修改!
#!/bin/bash
#獲取linux服務(wù)器上/dev/sda7的磁盤空間大小
DISK_SIZE=`df -k|grep /dev/sda7 |awk ‘{ print substr($5,1,2) }’`
export DISK_SIZE
LANG=zh_CN.UTF-8
export LANG
#判斷磁盤空間是否大于85% 如果大于85%就直接退出執(zhí)行s
if ; then
echo DISK_SIZE is $DISK_SIZE over 85
exit
else
echo DISK_SIZE=$DISK_SIZE
fi
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#oralce安裝的路徑
ORACLE_BASE=/opt/app/oracle
export ORACLE_BASE
ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1
export ORACLE_HOME
#oracle安裝的服務(wù)名稱
ORACLE_SID=metardb
export ORACLE_SID
#BAK_PATH is a path that store your exp file
BAK_PATH=”/orabak”
#LOG_FILE is a file that recorde the results of export
LOG_FILE=”$BAK_PATH”/`date +%Y%m%d`_brief.log
#Define the exp user
USER=system
#Define the exp user’s password
PASSWD=metarnet
#Determine the current user name
CUSER=`id |cut -d”(” -f2 | cut -d “)” -f1`
#Define the retention days of your backup file
DAYS=365
#******************************************************************
#It is unnecessary to edit the the below text in normal condition.*
#******************************************************************
echo “The start time is: “`date` >> $LOG_FILE
echo >> $LOG_FILE
if ; then
echo DISK_SIZE is $DISK_SIZE over 85|tee -a $LOG_FILE
exit
else
echo DISK_SIZE=$DISK_SIZE|tee -a $LOG_FILE
fi
#Define the backup file name
BAK_FILE=metardb_`date +%Y%m%d_%w`_full.dmp
#Define the backup log file name
BAK_LOG=metardb_`date +%Y%m%d_%w`_full.log
#Define your backup command
CMD_STR=”
setenv ORACLE_HOME $ORACLE_HOME
exp $USER/$PASSWD@$ORACLE_SID file=$BAK_PATH/$BAK_FILE log=$BAK_PATH/$BAK_LOG full=y
“
#Begin backup
echo “Backup is started” >>$LOG_FILE
echo “……”>>$LOG_FILE
if
then
su – oracle -c “$CMD_STR” >> $LOG_FILE
RSTAT=$?
else
/usr/bin/csh -c “$CMD_STR” >> $LOG_FILE
RSTAT=$?
fi
if
then
echo “Backup to Hard disk is ended successful!” >> $LOG_FILE
else
echo “Notice! Backup hard disk is ended unsuccessful!”>> $LOG_FILE
fi
#compress
#yestoday=`date +%D | awk -F/ ‘{s=$2-2}{printf”20%02d%02d%02d\n”, $3,$1,s}’`
cd $BAK_PATH
#CMP_FILE=”yujing_”$yestoday”_full.dmp”
echo “Compress “$BAK_FILE >>$LOG_FILE
gzip $BAK_FILE
#Delete 3 days ago file
OLDFILE=metardb_`date -d ‘3 days ago’ +%Y%m%d_%w`_full.dmp.gz
OLDLOG=metardb_`date -d ‘3 days ago’ +%Y%m%d_%w`_full.log
rm -rf /orabak/$OLDFILE
rm -rf /orabak/$OLDLOG
echo >>$LOG_FILE
echo “Backup to Hard disk End time is: “`date`>>$LOG_FILE
這個(gè)好辦。 cp 你的數(shù)據(jù)庫(kù)`date +’%y%m%d’` 指定目錄 這個(gè)是以年月日來(lái)命名備份 刪除的命令是
rm -f 你的數(shù)據(jù)庫(kù)名字`date -d “3 days ago” +’%y%m%d’` 這個(gè)是刪除匹配你數(shù)據(jù)庫(kù)的備份名日期前3天的備份文件 他會(huì)按照日期-3天匹配3天前的日期來(lái)刪除備份的
加偶QQ告訴你,
linux自動(dòng)備份網(wǎng)站和數(shù)據(jù)庫(kù),到另外服務(wù)器上,為當(dāng)前用戶創(chuàng)建定時(shí)任務(wù)
linux自動(dòng)備份網(wǎng)站和數(shù)據(jù)庫(kù),到另外服務(wù)器上,為當(dāng)前用戶創(chuàng)建定時(shí)任務(wù)兩臺(tái)服務(wù)器111,和117服務(wù)族答器,每天完成111服務(wù)器上網(wǎng)站和數(shù)據(jù)庫(kù)轎鋒自動(dòng)備份到117服務(wù)器上1:我的111服務(wù)器上是當(dāng)前用戶:sxA:
查看當(dāng)前用戶的計(jì)劃任務(wù):crontab
-l是查看當(dāng)前用戶的任務(wù)用
vi
crontab
-e
是為sxw用戶創(chuàng)建一個(gè)計(jì)劃任務(wù)之一行:每天3點(diǎn)運(yùn)行/home/sxw/rsync201.sh
shell腳本,第二行:和第三行是每天下午7點(diǎn)運(yùn)行tar包,gaokaotong和phpcms文件第三行:每天7點(diǎn)22分運(yùn)行/homesxw/back_up.sh
shell腳本,注意:這里是當(dāng)前用戶sxw,所以要shell腳本路徑要有用戶sxw權(quán)限,在這里/home/sxw/back_up
shell腳本,是當(dāng)前用戶sxw用戶的家目錄。B:
111服務(wù)器上/home/sxw/back_up.sh腳本code:-bash-3.2$
vim
/home/sxw/back_up.sh#!/bin/shecho
開(kāi)始備份數(shù)據(jù)庫(kù)mysqldump
-u
jeecms
-pjeecms1234
gktcms
>
gktcms.sqlmysqldump
-u
jeecms
-pjeecms1234
phpcms
>
phpcms.sqlecho
備份數(shù)據(jù)庫(kù)完成,復(fù)制到117服務(wù)器端scp
-P
10022
gktcms.sql
:/home/zkscp
-P
10022
phpcms.sql
:/home/zkscp
-r
-P
10022
/opt/www/www2/phpcms.tar.gz
:/home/zk/scp
-r
-P
10022
/opt/www/www2/gaokaotong.tar.gz
:/home/zk/echo
發(fā)送完成C:
還要在111上做ssh信任,這個(gè)可參照ssh資料。很簡(jiǎn)單,只需要閉穗晌建立兩個(gè)密鑰。2:
117服務(wù)器上/homezk/自動(dòng)就會(huì)多出兩個(gè)tar包文件,phpcms.tar.gz
和gaokaotong.tar.gz這里每天自動(dòng)保存兩個(gè)文件,phpcms.tar.gz
和
gaokaotong.tar.gz文件
這里做了一個(gè)shell腳本,保存前兩天的文件,跟上述111服務(wù)器上的建立計(jì)劃任務(wù)一樣:A:
查看117的計(jì)劃任務(wù):
crontabl
-lB:
在查看/home/zk/back.sh
的shell編寫code:$
vi
/home/zk/back.sh#!/bin/shTARFILE=/home/zk/phpcms.tar.gzif
-f
$TARFILE
>;then
mv
/home/zk/phpcms.tar.gz
/home/zk/phpcms_$(date
+%Y%m%d).tar.gz
#remove
date
file
DATE_B=$(date
-d2
day
ago
+%Y%m%d)
FILENAME=/home/zk/phpcms_$DATE_B.tar.gz
if
-f
$FILENAME
>;then
rm
-rf
/home/zk/phpcms_$DATE_B.tar.gz
else
echo
沒(méi)有可刪除文件
fielse
echo
沒(méi)有源文件fi~
關(guān)于linux備份數(shù)據(jù)庫(kù)腳本的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)頁(yè)標(biāo)題:Linux數(shù)據(jù)庫(kù)備份腳本的實(shí)現(xiàn)方法(linux備份數(shù)據(jù)庫(kù)腳本)
文章轉(zhuǎn)載:http://www.dlmjj.cn/article/djpehij.html


咨詢
建站咨詢
