站長(zhǎng)告訴你如何進(jìn)行關(guān)鍵數(shù)據(jù)備份
作為一名站長(zhǎng),或者作為一名網(wǎng)站維護(hù)人員,最重要的工作內(nèi)容之一就是保證數(shù)據(jù)的安全,穩(wěn)定的運(yùn)行.
數(shù)據(jù)維護(hù)有很多種,今天我們只從***層數(shù)據(jù)聊起,mysq備份.說(shuō)到mysql數(shù)據(jù)庫(kù),這里也順便提下,mysql的***版本是6.系列增加一些功能,下載地址:http://dev.mysql.com/downloads/
mysql 6 由于還未得到廣泛的使用,今天并不特意去推薦和介紹mysql6版本,我們推薦用的幾個(gè)版本為 。
php 5.2.11+ mysql5.0.8x
php5.3.x+5.1.x
php5.1.4 也經(jīng)常使用. 都是大型或者超大型網(wǎng)站在使用,而且穩(wěn)定使用的搭配,
包括目前在維護(hù)的網(wǎng)站,大大小小站點(diǎn)用的很多.可以說(shuō),是較為穩(wěn)定的搭配.推薦大家使用..
當(dāng)然,mysql6 也有很多新特性, 如支持更多的Unicode字符集,增加了 BACKUP DATABASE 和 RESTORE 語(yǔ)句來(lái)進(jìn)行備份和還原操作.等,相信以后會(huì)應(yīng)用到.
好,下面開(kāi)始說(shuō)Mysql備份.
我們分三個(gè)點(diǎn)來(lái)說(shuō)吧.
一是常規(guī)定期備份的重要性 ,
二是備份的時(shí)間選擇,
三是備份的手段和方法,分為windows 和linux服務(wù)器
一是常規(guī)定期備份的重要性
不可抗力因素,如火災(zāi),地震,洪水,等造成數(shù)據(jù)丟失,當(dāng)然包括硬盤(pán)報(bào)廢都屬于可能發(fā)生的情況,乃至軟件破壞導(dǎo)致數(shù)據(jù)損壞的情況下,定期備份數(shù)據(jù)就顯得異常重要.
如我某某服務(wù)器放在XX機(jī)房,突發(fā)現(xiàn)該機(jī)房有一些服務(wù)器存有非法信息,機(jī)房背負(fù),如果我們要備份,那我就求神拜佛也沒(méi)轍了.如果定期備份,只不過(guò)耗點(diǎn)人力財(cái)力,換個(gè)地方換個(gè)機(jī)器就OK。
特別是目前的網(wǎng)絡(luò)環(huán)境, 定期備份的重要性,我相信大家深有體會(huì).
二是備份的時(shí)間選擇.
備份時(shí)間選擇,因?yàn)閭浞葸^(guò)程會(huì)有一定的時(shí)間和資源要求,所以一般推薦選擇在夜里3到6點(diǎn)之間?為什么要選擇這個(gè)時(shí)間備份, 因?yàn)檫@個(gè)時(shí)間段訪問(wèn)人數(shù)最少,服務(wù)器資源最豐富,備份也將能保證更順利的完成.
難道每天都那么遲備份,那不是累死人? 當(dāng)然不可能要求,人肉去天天備份了. 所以有自動(dòng)備份之做法,比如設(shè)置每天備份一次在凌晨3點(diǎn)30分執(zhí)行。(方法后面會(huì)講到),那么站長(zhǎng)需要做的,就是定期的把服務(wù)器的備份數(shù)據(jù)下載下來(lái)即可
三是備份的手段和方法。
分為windows 和linux服務(wù)器 .
說(shuō)到備份的方法和手段,在Google那是相當(dāng)?shù)亩?這里也按常規(guī)和常用的方法給大家做下介紹,包括實(shí)施方法
最常用的有以下幾種:
PW后臺(tái)自帶備份法, mysqldump備份, 數(shù)據(jù)庫(kù)文件備份法. Phpmyadmin備份法,( mysqlhotcopy 只能在類unix下運(yùn)行的)
這里補(bǔ)充說(shuō)下,pw自帶的后臺(tái)備份,和pma備份是一樣的。PW自帶的增加了分卷功能,方便導(dǎo)入. 下面我們就抽出前幾種備份方法來(lái)做下詳細(xì)介紹。
PW后臺(tái)自帶的備份
此功能是從pma演變出來(lái)的.,可以用一個(gè)字形容,easy! ,方便,快捷.容易操作.可以單獨(dú)選擇表備份,可以一鍵備份所有論壇數(shù)據(jù)表,對(duì)于站長(zhǎng)來(lái)說(shuō)等于無(wú)門(mén)檻的操作,一鍵選擇,一鍵備份,程序自動(dòng)備份打包分卷,直到完成.推薦大家使用!
還有一點(diǎn),pw后臺(tái)自帶備份,幾乎避免轉(zhuǎn)移數(shù)據(jù)出現(xiàn)亂碼. 跨數(shù)據(jù)庫(kù)版本的兼容問(wèn)題.數(shù)據(jù)非常大的情況,建議采用其他備份方法.
mysqldump備份法,
此種備份是不需要停止mysql,就可以直接備份的 對(duì)技術(shù)有些要求,當(dāng)然了,通過(guò)今天講解,希望大家都理解此種方法. 我們分為 windows和linux下的mysql備份來(lái)演示.
此種方法,就是用用于數(shù)據(jù)較大的備份. 用此種方法備份,需要先了解下幾個(gè)參數(shù). --default-character-set=charset
指定導(dǎo)出數(shù)據(jù)時(shí)采用何種字符集,如果數(shù)據(jù)表不是采用默認(rèn)的 latin1 字符集的話,那么導(dǎo)出時(shí)必須指定該選項(xiàng),否則再次導(dǎo)入數(shù)據(jù)后將產(chǎn)生亂碼問(wèn)題。
--disable-keys
告訴 mysqldump 在 INSERT 語(yǔ)句的開(kāi)頭和結(jié)尾增加 ; 和 ; 語(yǔ)句,這能大大提高插入語(yǔ)句的速度,因?yàn)樗窃诓迦胪晁袛?shù)據(jù)后才重建索引的。該選項(xiàng)只適合 MyISAM 表
--lock-all-tables,-x
在開(kāi)始導(dǎo)出之前,提交請(qǐng)求鎖定所有數(shù)據(jù)庫(kù)中的所有表,以保證數(shù)據(jù)的一致性。這是一個(gè)全局讀鎖,并且自動(dòng)關(guān)閉 --single-transaction 和 --lock-tables 選項(xiàng)。
--hex-blob
使用十六進(jìn)制格式導(dǎo)出二進(jìn)制字符串字段。如果有二進(jìn)制數(shù)據(jù)就必須使用本選項(xiàng)。影響到的字段類型有BINARY、VARBINARY、BLOB 。
--triggers
同時(shí)導(dǎo)出觸發(fā)器。該選項(xiàng)默認(rèn)啟用,用 --skip-triggers 禁用它。
如,我本地備份.
usr/local/mysql/bin/mysqldump -uroot -proot \ --default-character-set=gbk --opt --extended-insert=false \ --triggers –R --hex-blob -x wind7> phpwind75-0119.sql
上面命令,可以在mysql> 輸入.備份數(shù)據(jù)庫(kù) wind7 成 phpwind75-0119.sql 文件.
最常見(jiàn)的就是工具備份方法,如phpmyadmin ,簡(jiǎn)稱 PMA ,
這個(gè)工具有個(gè)弊端,就是備份數(shù)據(jù)很大的時(shí)候,導(dǎo)出容易假死,導(dǎo)入很難成功.不具備分卷功能. 個(gè)人不推薦用此工具備份, 不過(guò)可以用來(lái)查看一些表內(nèi)容, 或者單獨(dú)備份某些字段的時(shí)候用.
pma更多用來(lái)做數(shù)據(jù)庫(kù)的管理. 這里我們就不多介紹了.下面我說(shuō)一個(gè)適合所有有獨(dú)立服務(wù)器的站長(zhǎng)用的方法
直接拷貝數(shù)據(jù)庫(kù)文件法. 個(gè)人極力推薦
這種方法最快速,必須先停止或者保證沒(méi)有觸發(fā)修改數(shù)據(jù)的操作. 如果數(shù)據(jù)庫(kù)表在文件系統(tǒng)備份過(guò)程中被修改,進(jìn)入備份的表文件主語(yǔ)不一致的狀態(tài),而對(duì)以后的恢復(fù)表將失去意義.這點(diǎn)一定要記住!
直接拷貝數(shù)據(jù)庫(kù)備份法比mysqldump備份快,但要求較高,必須是3.23以后的mysql而且文件必須MyISAM格式表示,而不是ISAM格式。這段不大擔(dān)心,目前流行的基本都滿足!
mysqldump生成能夠移植到其它機(jī)器的文本文件,甚至那些有不同硬件結(jié)構(gòu)的機(jī)器上,但備份速度較慢。這也是兩種備份方法的不同優(yōu)勢(shì).說(shuō)到這里,不得不說(shuō),對(duì)備份的文件名做下要求,強(qiáng)烈建議使用一種統(tǒng)一的和易理解的備份文件命名機(jī)制。象backup1、buckup2等不是特別有意義。
當(dāng)實(shí)施你的恢復(fù)數(shù)據(jù)時(shí),你將浪費(fèi)時(shí)間找出文件里是什么東西。你可能發(fā)覺(jué)用數(shù)據(jù)庫(kù)名和日期構(gòu)成備份文件名會(huì)很有用,包括前面mysqldump的備份命名也如此。如:Wind7-2010-01-19 (數(shù)據(jù)庫(kù)-備份時(shí)間)
說(shuō)了這么多,我們來(lái)兩個(gè)腳本可以讓大家實(shí)戰(zhàn)演習(xí)下.
說(shuō)明: 本次的腳本和程序都會(huì)在官方發(fā)布.請(qǐng)大家放心.
Windows
@echo off
D:
CD backup
rename mysqlbk.sql "%DATE%".sql
"D:\soft\mysql\bin\mysqldump" -uroot --password=root --all-database > d:/backup/mysqlbk.sql
把以上代碼存為backup.bat 并加入計(jì)劃任務(wù),設(shè)置3點(diǎn)執(zhí)行. [win服務(wù)器如何添加計(jì)劃任務(wù),自己谷歌去吧,哈哈這里不說(shuō)了]
Linux
本列假設(shè)數(shù)據(jù)安裝在/usr/local/mysql目錄下備份/usr/local/mysql/var下的phpwind數(shù)據(jù)。在/root下建立mysqlpw.sh腳本,腳本如下:
#!/bin/sh cd /home/phpwind phpwindfile=phpwind-$(date +%Y%m%d).tar.gz /usr/local/mysql/share/mysql/mysql.server stop tar zcvf $phpwindfile /usr/local/mysql/var/phpwind /usr/local/mysql/share/mysql/mysql.server start
可將此腳本放置在crontab里面自動(dòng)每天莫個(gè)時(shí)間點(diǎn)執(zhí)行(如:00 04 * * * /root/mysqlpw.sh)
以上兩個(gè)腳本,都是用自動(dòng)備份的來(lái)完成的.windows 可以加載在計(jì)劃任務(wù)來(lái)執(zhí)行, 比如定在凌晨3點(diǎn)半..開(kāi)始。linux 也一樣,方在crontab 自帶設(shè)定在凌晨執(zhí)行備份.
說(shuō)下腳本的含義吧,這樣大家能了解腳本執(zhí)行的原理.
Windows(linux腳本里看注解), 備份文件是放在 d:\backup 下的.
ren mysqlbk.sql "%DATE%".sql
改名 ,每天自動(dòng)運(yùn)行會(huì)改成 不同的文件名存放.
"D:\soft\mysql\bin\mysqldump" -uroot --password=root, --all-database > d:/backup/mysqlbk.sql
這里是全備份, 也可以選擇單個(gè)數(shù)據(jù)庫(kù) 如 wind7 ,好,說(shuō)完了自動(dòng)備份,我來(lái)說(shuō)下人工智能備份,哈哈.
【編輯推薦】