文/李來祥
Linux中MySQL的異地自動備份
文/李來祥
隨著校園網(wǎng)應用的日益豐富,Linux系統(tǒng)下MySQL數(shù)據(jù)庫的應用也越來越廣泛。然而數(shù)據(jù)的意外丟失對于校園網(wǎng)應用來說是很大的損失,業(yè)務數(shù)據(jù)和校園網(wǎng)應用的日常業(yè)務運作唇齒相依。數(shù)據(jù)的丟失,即使是暫時性,也會給校園網(wǎng)應用的正常運行帶來諸多的麻煩,況且有些基礎數(shù)據(jù)是不可再生的。所以搞好數(shù)據(jù)庫的備份工作,對于校園網(wǎng)應用的安全運行來說至關重要。
傳統(tǒng)的MySQL數(shù)據(jù)庫備份人為參與的因素較多,費時費力。而且隨著MySQL數(shù)據(jù)量的增加,傳統(tǒng)的備份方式越來越不現(xiàn)實,本著低成本高效率的原則,如何實現(xiàn)MySQL數(shù)據(jù)庫異地自動備份是一個值得關注的話題。本文結合網(wǎng)絡應用管理的實際經(jīng)驗,分以下幾個步驟詳細介紹了Linux環(huán)境下如何實現(xiàn)MySQL數(shù)據(jù)庫輕量級的異地自動備份。
數(shù)據(jù)庫服務器:Linux AS3,MySQL-4.1.14-rhel3
FTP 服務器:Linux AS3, vsftpd-1.2.0-4(Linux自帶)
由于MySQL安裝完成之后,超級用戶root的口令為空,所以任何人都可以無需口令地以root用戶進行連接并且被授予所有權限。盡管這樣的連接必須從本地主機發(fā)出,但對于MySQL數(shù)據(jù)庫系統(tǒng)來說仍然是不安全的。因此備份的第一項工作就是應該為root設置一個口令。方法如下:在mysql>模式下,使用SQL語句和PASSWORD()函數(shù)設置root口令,具體命令如下:
通過上述命令將連接使用MySQL的超級用戶root的登錄口令設置成123456。
MySQL數(shù)據(jù)庫的常用備份方法是使用應用程序mysqldump,備份命令格式如下:
說明:
(1)mysql_bin_dir:mysqldump所在的路徑,一般默認為為/usr/bin
(2)user:數(shù)據(jù)庫用戶名;
(3)dataname:數(shù)據(jù)庫名;
(4)password:用戶密碼;
(5)$(date +%Y%m%d):系統(tǒng)用來獲取當前時間的命令,這個時間作為前綴用來標識備份文件。
如何將定期備份的數(shù)據(jù)庫文件自動上傳到另一臺FTP服務器,是實現(xiàn)數(shù)據(jù)庫自動備份的關鍵。在上傳數(shù)據(jù)前,需要FTP服務器提供具有上傳數(shù)據(jù)權限的用戶,以及正常的FTP服務。這里通過Linux的shell腳本程序來實現(xiàn),具體的腳本命令如下:
為了節(jié)省MySQL數(shù)據(jù)庫上的空間,可以用以下命令刪除在MySQL服務器生成的臨時文件。
創(chuàng)建文件backup.sh,將其保存在/root目錄下,具體內容如下:
在/root目錄下,賦予backup.sh可執(zhí)行權限具體命令為:
具體操作如下:
用root登陸系統(tǒng)編輯crontab文件
在末尾添加如下一行,即每天的01:05執(zhí)行以上腳本
這樣,服務器就可以自動的每天實現(xiàn)MySQL數(shù)據(jù)的異地備份了。
MySQL數(shù)據(jù)庫異地自動備份的實現(xiàn)在一定程度上減少了人為參與的環(huán)節(jié),確保了數(shù)據(jù)的安全,為Linux下mysql數(shù)據(jù)庫的網(wǎng)絡應用的正常運行,提供了有力的保證。
(作者單位為山東聊城大學網(wǎng)絡信息中心)