發新話題

[shell] mysql 備份腳本

[shell] mysql 備份腳本

mysql 備份腳本
#!/bin/sh
#-----------------------------------------------#
#This is a  free GNU GPL version 3.0 or abover
#Copyright (C) 2008 06 05
#mysql_backup Dedicated copyright
#-----------------------------------------------#
echo -e [`date +"%Y-%m-%d %H:%M:%S"`] start
#system time
time=`date +"%y-%m-%d"`
#host IP
host="127.0.0.1"
#database backup user
user="root"
#database password
passwd="mysql45"
#Create a backup directory
mkdir -p /opt/backup/"$time"
#list database name
all_database=`/opt/app/mysql5/bin/mysql -u "$user" -h "$host" -p"$passwd" -Bse 'show databases'`
#in the table from the database backup
for i in $all_database
do
/opt/app/mysql5/bin/mysqlhotcopy -u "$user" -h "$host" -p"$passwd" --addtodest "$all_database" /opt/backup/"$time"/
done
echo -e [`date +"%Y-%m-%d %H:%M:%S"`]  end
exit 0

TOP

還有一種備份方案 也給大家
/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解決了
本帖最近評分記錄
  • 靜羚 經驗 +30 言之有物 2010-10-31 08:42
  • 靜羚 金幣 +30 言之有物 2010-10-31 08:42

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。