西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)西西教程數(shù)據(jù)庫(kù)教程 → MYSQL自動(dòng)備份策略的選擇與優(yōu)劣點(diǎn)分析

MYSQL自動(dòng)備份策略的選擇與優(yōu)劣點(diǎn)分析

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2013/9/6 8:41:33字體大。A-A+

作者:西西點(diǎn)擊:156次評(píng)論:0次標(biāo)簽: 自動(dòng)備份

  • 類(lèi)型:拔號(hào)計(jì)時(shí)大。345KB語(yǔ)言:中文 評(píng)分:6.0
  • 標(biāo)簽:
立即下載

目前流行幾種備份方式:

1、邏輯備份:

使用mysql自帶的mysqldump工具進(jìn)行備份。備份成sql文件形式。
優(yōu)點(diǎn):最大好處是能夠與正在運(yùn)行的mysql自動(dòng)協(xié)同工作,
在運(yùn)行期間可以確保備份是當(dāng)時(shí)的點(diǎn),它會(huì)自動(dòng)將對(duì)應(yīng)操作的表鎖定,不允許其他用戶(hù)修改(只能訪(fǎng)問(wèn))?赡軙(huì)阻止修改操作。sql文件通用方便移植。

缺點(diǎn):備份的速度比較慢。如果是數(shù)據(jù)量很多的時(shí)候。就很耗時(shí)間。如果數(shù)據(jù)庫(kù)服務(wù)器處在提供給用戶(hù)服務(wù)狀態(tài),在這段長(zhǎng)時(shí)間操作過(guò)程中,意味著要鎖定表(一般是讀鎖定,只能讀不能寫(xiě)入數(shù)據(jù))。那么服務(wù)就會(huì)影響的。

備注:所謂的與mysql服務(wù)器能夠自動(dòng)協(xié)同工作,實(shí)際上是指加參數(shù)來(lái)控制mysql服務(wù)器,比如鎖定所有表只能進(jìn)行讀,不能進(jìn)行寫(xiě)操作。

--lock-all-tables

2、物理備份:

直接拷貝mysql的數(shù)據(jù)目錄。缺點(diǎn),你不能去操作正在運(yùn)行的mysql服務(wù)器(在拷貝的過(guò)程中有用戶(hù)通過(guò)應(yīng)用程序訪(fǎng)問(wèn)更新數(shù)據(jù),這樣就無(wú)法備份當(dāng)時(shí)的數(shù)據(jù))
可能無(wú)法移植到其他機(jī)器上去。
直接拷貝只適用于myisam類(lèi)型的表。這種類(lèi)型的表是與機(jī)器獨(dú)立的。但實(shí)際情況是,你設(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候不可能全部使用myisam類(lèi)型表。你也不可能:因?yàn)閙yisam類(lèi)型表與機(jī)器獨(dú)立,方便移植,于是就選擇這種表,這并不是選擇它的理由。

更多的情況是,你會(huì)根據(jù)業(yè)務(wù)特點(diǎn)(比如你需要支持事務(wù)機(jī)制就必須使用innodb),查詢(xún)速度和服務(wù)性能來(lái)選擇表類(lèi)型的。

必須保證表不被使用中。
如果服務(wù)器在你則正在拷貝一個(gè)表時(shí)改變它,拷貝就失去意義。
如果數(shù)據(jù)庫(kù)表在文件系統(tǒng)備份過(guò)程中被修改,進(jìn)入備份的表文件主語(yǔ)不一致的狀態(tài),而對(duì)以后的恢復(fù)表將失去意義。

保證你的拷貝完整性的最好方法是:關(guān)閉服務(wù)器,拷貝文件,然后重啟服務(wù)器。
或者是,要鎖定對(duì)應(yīng)的表(對(duì)前端用戶(hù)造成訪(fǎng)問(wèn)問(wèn)題)。

解釋直接拷貝文件,為什么不具備可移植性?

mysqldump 產(chǎn)生可移植到其他機(jī)器、甚至具有不同硬件結(jié)構(gòu)的機(jī)器上的文本文件。直接拷貝文件不能夠移植到其他機(jī)器上,除非要拷貝的表使用MyISAM 存儲(chǔ)格式。ISAM 表只能在具有相同硬件結(jié)構(gòu)的機(jī)器之間進(jìn)行拷貝。例如,將文件從S PARC 的Solaris 機(jī)器拷貝到Intel 的Solaris 機(jī)器(或者相反)是行不通的。由MySQL3.23 引進(jìn)的MyISAM 表存儲(chǔ)格式可以解決這個(gè)問(wèn)題,因?yàn)樵摳袷脚c機(jī)器獨(dú)立。因此,如果以下兩個(gè)條件都滿(mǎn)足的話(huà),直接拷貝文件可以移植到具有不同硬件結(jié)構(gòu)的機(jī)器上:即另一臺(tái)機(jī)器上也必須運(yùn)行MySQL3.23 以上的版本,并且文件必須表示成MyISAM 表,而不是ISAM 表。

3、雙機(jī)熱備份。

mysql數(shù)據(jù)庫(kù)沒(méi)有增量備份的機(jī)制。當(dāng)數(shù)據(jù)量太大的時(shí)候備份是一個(gè)很大的問(wèn)題。還好mysql數(shù)據(jù)庫(kù)提供了一種主從備份的機(jī)制(也就是雙機(jī)熱備)
優(yōu)點(diǎn):適合數(shù)據(jù)量大的時(shí)候,F(xiàn)在明白了。大的互聯(lián)網(wǎng)公司對(duì)于mysql數(shù)據(jù)備份,都是采用熱機(jī)備份。搭建多臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,進(jìn)行主從復(fù)制。

主從復(fù)制經(jīng)常遇到的問(wèn)題就是,如何保證數(shù)據(jù)不堵塞,不延遲。這個(gè)問(wèn)題還是可以容忍的,有一些方案可以改善。畢竟有得有失的。這已經(jīng)是很省心省力的方式了。

================================================

我目前應(yīng)該使用什么樣的備份策略的權(quán)衡:

物理備份,恢復(fù)快,當(dāng)然最好是存儲(chǔ)在一個(gè)機(jī)器上。我現(xiàn)在是用物理備份還是邏輯備份為好呢?
考慮到以后會(huì)遷移平臺(tái)。為了保證通用性;謴(fù)速度1分鐘左右的差距我是可以容忍的。所以我為了跨平臺(tái),我更加愿意使用邏輯備份。存儲(chǔ)sql文件形式。

雙熱機(jī)備份方式,目前硬件沒(méi)有多個(gè)。技術(shù)人員有限,需要人力去維護(hù),比較麻煩。所以排除在外。

方案:
1、總體策略:寫(xiě)個(gè)定時(shí)執(zhí)行任務(wù)。定時(shí)在晚上或凌晨自動(dòng)備份(考慮數(shù)據(jù)庫(kù)服務(wù)器在運(yùn)行中不能停機(jī))
代碼中做成備份成功后,把以前的刪掉。避免很多數(shù)據(jù)占據(jù)磁盤(pán)。

2、考慮到初期數(shù)據(jù)量這么小。使用mysqldump進(jìn)行備份吧。設(shè)置在凌晨幾點(diǎn)(4-6點(diǎn)這個(gè)時(shí)候基本上沒(méi)什么人訪(fǎng)問(wèn))的時(shí)候自動(dòng)備份。

3、使用邏輯備份方式:恢復(fù)速度1分鐘左右的差距我是可以容忍的。所以我為了跨平臺(tái),我更加愿意使用邏輯備份。存儲(chǔ)sql文件形式。

4、每天都進(jìn)行備份。

由于是在凌晨的時(shí)候mysqldump去鎖定,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)服務(wù)器。對(duì)服務(wù)器幾乎沒(méi)什么影響。所以每天都可以備份。每天都一個(gè)sql文件。那么將會(huì)很多文件。
所以,每次備份成功后。刪除以前的文件。保留最近一個(gè)星期的備份sql文件。


備份工具的路徑:/usr/bin/mysqldump
備份數(shù)據(jù)保存路徑:/data/backdata/

5、備份腳本的編寫(xiě)

思路:

5.1 在shell腳本中調(diào)用mysqldump生成備份文件(這個(gè)工具可以生成sql文件到磁盤(pán)上去)

5.2 為了方便以后查找。每次備份的記錄記錄成日志形式。幾點(diǎn)進(jìn)行了備份操作,生成了什么文件名稱(chēng)。這樣可以方便以后查閱哪天是否沒(méi)有成功備份

刪除的文件作為日志信息也記錄下來(lái)。

5.3  讓linux下的crontab進(jìn)程調(diào)用腳本執(zhí)行。

命令:crontab -e

打開(kāi)的文件中加入代碼:0 05 * * * 腳本的路徑/mysqlback.sh

mysqlback.sh的內(nèi)容:

# /bin/bash
DB_NAME="****"
DB_USER="****"
DB_PASS="****"
BIN_DIR="/usr/bin"
BACK_DIR="/data/backdata"
DATE="mysql-`date +'%Y%m%d-%H:%M:%S'`"
LogFile="$BACK_DIR"/dbbakup.log #日志記錄保存的目錄
BackNewFile=$DATE.sql

$BIN_DIR/mysqldump --opt --force -u$DB_USER  -p$DB_PASS $DB_NAME > $BACK_DIR/$DATE.sql


echo -----------------------"$(date +"%y-%m-%d %H:%M:%S")"----------------------- >> $LogFile 



echo  createFile:"$BackNewFile" >> $LogFile


#find "/data/backdata/" -cmin +1 -type f -name "*.sql" -print > deleted.txt

find "/data/backdata/" -ctime +7 -type f -name "*.sql" -print > deleted.txt

echo -e "delete files:\n" >> $LogFile 

#循環(huán)刪除匹配到的文件
cat deleted.txt | while read LINE
do
    rm -rf $LINE
    echo $LINE>> $LogFile
done


echo "---------------------------------------------------------------" >> $LogFile

    adsl密碼查看器
    (11)adsl密碼查看器
    西西軟件園提供好用的密碼查看器,撥號(hào)密碼,就是我們?nèi)ル娦啪W(wǎng)通鐵通等辦理寬帶上網(wǎng)業(yè)務(wù)時(shí),他們給的一個(gè)帳號(hào)和密碼,我們每次上網(wǎng)需要使用這個(gè)帳號(hào)和密碼撥號(hào)連接才可以上網(wǎng)。但是由于密碼是自動(dòng)保存的,時(shí)間長(zhǎng)了之后我們就會(huì)忘記密碼,如果運(yùn)營(yíng)商給的那個(gè)密碼單還在的話(huà),還可以去查看一下,如果丟了就需要找客服去查找,很麻煩,要身份證等,這時(shí)我們可以使用密碼查看器幫你將已保存在電腦里的撥號(hào)密碼顯示出來(lái)。...更多>>

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀(guān)圍觀(guān)
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)