備份策略一:直接拷貝數(shù)據(jù)庫文件(不推薦)
備份策略二:使用mysqlhotcopy備份數(shù)據(jù)庫(完全備份,適合小型數(shù)據(jù)庫備份)
備份策略三:使用mysqldump備份數(shù)據(jù)庫(完全+增量備份,適合中型數(shù)據(jù)庫備份)
備份策略四:使用主從復(fù)制機(jī)制(replication)(實(shí)現(xiàn)數(shù)據(jù)庫實(shí)時備份)
腳本下載地址:點(diǎn)擊下載腳本
備份策略一、直接拷貝數(shù)據(jù)庫文件
直接拷貝數(shù)據(jù)文件最為直接、快速、方便,但缺點(diǎn)是基本上不能實(shí)現(xiàn)增量備份。為了保證數(shù)據(jù)的一致性,需要在備份文件前,執(zhí)行以下
FLUSH
也就是把內(nèi)存中的數(shù)據(jù)都刷新到磁盤中,同時鎖定數(shù)據(jù)表,以保證拷貝過程中不會有新的數(shù)據(jù)寫入。這種方法備份出來的數(shù)據(jù)恢復(fù)也很簡單,直接拷貝回原來的數(shù)據(jù)庫目錄下即可。
備份策略二、使用mysqlhotcopy備份數(shù)據(jù)庫
mysqlhotcopy
本備份策略適合于小型數(shù)據(jù)庫的備份,數(shù)據(jù)量不大,可以采用mysqlhotcopy程序每天進(jìn)行一次完全備份。
備份策略布置:
(1)、安裝DBD-mysql
shell>
shell>
shell>
shell>
shell>
shell>
shell>
(2)、設(shè)置crontab任務(wù),每天執(zhí)行備份腳本
shell>
0
每天凌晨3:00執(zhí)行備份腳本。
mysqlbackup.sh注釋:
#!/bin/sh
# Name:mysqlbackup.sh
# PS:MySQL DataBase Backup,Use mysqlhotcopyscript.
# Write by:i.Stone
# Last Modify:2007-11-15
#
# 定義變量,請根據(jù)具體情況修改
# 定義腳本所在目錄
scriptsDir=`pwd`
# 數(shù)據(jù)庫的數(shù)據(jù)目錄
dataDir=/usr/local/mysql/data/
# 數(shù)據(jù)備份目錄
tmpBackupDir=/tmp/tmpbackup/
backupDir=/tmp/mysqlbackup/
# 用來備份數(shù)據(jù)庫的用戶名和密碼
mysqlUser=root
mysqlPWD=111111
# 定義eMail地址
eMail=alter@somode.com
# 如果臨時備份目錄存在,清空它,如果不存在則創(chuàng)建它
if [[ -e $tmpBackupDir ]]; then
else
fi
# 如果備份目錄不存在則創(chuàng)建它
if [[ ! -e $backupDir ]];then
fi
# 清空MySQLBackup.log
if [[ -s MySQLBackup.log ]]; then
fi
# 得到數(shù)據(jù)庫備份列表,在此可以過濾不想備份的數(shù)據(jù)庫
for databases in `find $dataDir -type d | \
# 備份數(shù)據(jù)庫
done
# 壓縮備份文件
date=`date -I`
cd $tmpBackupDir
tar czf $backupDir/mysql-$date.tar.gz ./
# 發(fā)送郵件通知
if [[ -s MySQLBackup.log ]]; then
fi
# 使用smbclientmv.sh腳本上傳數(shù)據(jù)庫備份到備份服務(wù)器
# $scriptsDir/smbclientmv.sh
smbclientmv.sh注釋
#!/bin/sh
# Name:smbclientmv.sh
# PS:Move the data to Backup Server.
# Write by:i.Stone
# Last Modify:2007-11-15
#
# 定義變量
# 備份服務(wù)器名
BackupServer="BackupServerName"
# 共享文件夾名
BackupShare="ShareName"
# 備份服務(wù)器的訪問用戶名和密碼
BackupUser="SMBUser"
BackupPW="SMBPassword"
# 定義備份目錄
BackupDir=/tmp/mysqlbackup
date=`date -I`
# Move the data to BackupServer
smbclient //$BackupServer/$BackupShare \
$BackupPW -d0 -W WORKGROUP -U $BackupUser \
-c "put $BackupDir/mysql-$date.tar.gz \
mysql-$date.tar.gz"
# Delete temp files
rm -f $BackupDir/mysql-$date.tar.gz
(3)、恢復(fù)數(shù)據(jù)庫到備份時的狀態(tài)
mysqlhotcopy 備份出來的是整個數(shù)據(jù)庫目錄,使用時可以直接拷貝到mysqld 指定的 datadir (在這里是/usr/local/mysql/data/)目錄下即可,同時要注意權(quán)限的問題,如下例:
shell> cp -rf db_name /usr/local/mysql/data/
shell> chown -R mysql:mysql /usr/local/mysql/data/ (將 db_name目錄的屬主改成 mysqld 運(yùn)行用戶)
本套備份策略只能恢復(fù)數(shù)據(jù)庫到最后一次備份時的狀態(tài),要想在崩潰時丟失的數(shù)據(jù)盡量少應(yīng)該更頻繁的進(jìn)行備份,要想恢復(fù)數(shù)據(jù)到崩潰時的狀態(tài)請使用主從復(fù)制機(jī)制(replication)。
聯(lián)系客服