還有一種備份方案 也給大家
/opt/app/mysql5/bin/mysqlhotcopy -u "$user" -h "$host" -p"$passwd" --addtodest "$all_database" /opt/backup/"$time"/
換成下面這個就可以了!
/opt/app/mysql5/bin/mysqldump --opt -u "$user" -h "$host" -p"$passwd" "$i" > /opt/backup/"$time"/"$i"_"$time".sql
hotcopy,和mysqldump是不用停庫的。一般網站的話要求不是很高的話可以每天晚上停掉,仍後壓成tar包這樣來備份,如果實時各方面要求很很高,不能停庫,那就做replication來備份,仍後每天對slave那台停庫壓縮,同樣也要經常觀察複製是否正常!
保留三十天備份
#!/bin/sh
user="root"
passwd="mysql"
data="/var/lib/mysql"
mkdir -p /var/bak/`date +%Y-%m-%d`
for d in `ls -l $data|grep ^d|awk '{print $9}'`
do
/usr/local/mysql/bin/mysqldump -u "$user" -p "$passwd" --opt $d | gzip > /var/bak/`date +%Y-%m-%d`/$d.gz
done
#############################
#del more than 30day file
#############################
for e in `ls -al /var/bak|grep ^d|awk '{print $9}'|grep ^2`
do
declare -i oday=`date -d $e +%s`
today=`date -I`
declare -i today=`date -d $today +%s`
declare -i r=$today-$oday
declare -i r=$r/86400
if [ $r -gt 30 ]; then
rm -rf /var/bakc/$e
fi
done
我的數據庫有幾百M了
備份的時候要好久
看來是要用master-slave解決了