linux系统下使用脚本定时备份数据库,代码如下:
#!/bin/bash
#Setting
#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式
#默认情况下备份方式是mysqldump,还可以是mysqldump,mysqldotcopy,如果注释掉第
#18行,则默认以tag的方式备份
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz
DBName=mysql
DBUser=root
DBPasswd=123456
BackupPath=/home/wang/www/backup/mysql/mysqlbackup
LogFile=/home/wang/www/backup/mysql/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End
NewFile="$BackupPath"db$(date +%y%m%d).tgz
DumpFile="$BackupPath"db$(date +%y%m%d)
OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
#Delete Old File
if [ -f $OldFile ]
then
rm -f $OldFile >> $LogFile 2>&1
echo "[$OldFile]Delete Old File Success!" >> $LogFile
else
echo "[$OldFile]No Old Backup File!" >> $LogFile
fi
if [ -f $NewFile ]
then
echo "[$NewFile]The Backup File is exists,Can’t Backup!" >> $LogFile
else
case $BackupMethod in
mysqldump*)
if [ -z $DBPasswd ]
then
mysqldump -u $DBUser --opt $DBName > $DumpFile
else
mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
rm -rf $DumpFile
;;
mysqlhotcopy*)
rm -rf $DumpFile
mkdir $DumpFile
if [ -z $DBPasswd ]
then
mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1
else
mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1
fi
tar czvf $NewFile $DumpFile >> $LogFile 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
rm -rf $DumpFile
;;
*)
/etc/init.d/mysqld stop >/dev/null 2>&1
tar czvf $NewFile $DBPath >> $LogFile 2>&1
/etc/init.d/mysqld start >/dev/null 2>&1
echo "[$NewFile]Backup Success!" >> $LogFile
;;
esac
fi
echo "-------------------------------------------"
echo
#lftp -f lftp.sh 如果有FTP可同时上传ftp中。
再利用crontab命令生成/var/spool/cron/root 文件:
#crontab –e
//打开一个编辑窗口,第一行会有内容格式的提示,在此输入命令
//m h dom mon dow command
//具体意义表示:分钟 小时 日期 月份 星期 命令,在某月(mon)的某天(dom)或者星期几(dow)的几点(h,24小时制)几分(m)执行某个命令(command)
//如: 10 02 * * * /home/backup/autobackupmysql.sh (表示零晨二点十分执行备份脚本)
LINUX通常使用tar命令进行数据备份,但外面很多资料所介绍的比较专业,也就比较复杂些,初学者很难看明白。现介绍一种“傻瓜式备份方案”,供初建LINUX服务器者参考。
1、首先我们要知道需要备份哪些数据。
一般包括数据库和网站数据,在本例中,数据库位于/var/lib/mysql/目录;网站位于/www/users/目录。
2、确定需要将数据备份在哪里,在这个分区中创建一个目录
应该挑选一个空间较大的分区,例: /var
键入命令:
cd /var
mkdir backup
3、创建备份目录后,进入备份目录
cd /var/backup
4、数据库一般应该完全备份,建议每次备份以当前日期命名
tar -czvf mysql20051015.tar.gz /var/lib/mysql/*
这个命令的意思是,在当前目录下生成一个备份,备份的内容是/var/lib/mysql/目录下的所有内容
5、如果网站数据不多,可以每次将网站数据完全备份
tar -czvf users20051015.tar.gz /www/users/*
6、如果网站数据较多(尤其是运营E站通,商城等每天更新文件量较大的系统),建议每月一次完全备份,每天(或每周)一次更新备份。这个备份方式即所谓的“差分备份”,差分备份要求每一次更新的备份都要针对上一次完全备份的时间。
例如:在10月15日进行一次完全备份:
tar -czvf users20051015.tar.gz /www/users/*
在下一次完全备份前针对10月15日的完全备份进行更新备份(如每周一次):
tar -czvf users20051015.tar.gz /www/users/* --newer 10/15/2005/
在进行“差分备份”后,如果需要恢复数据,应该是先恢复完全备份,再将最近的一次更新备份覆盖完全备份
直接备份数据库就行了。
在后台都有备份选项的,备份到本地。
要连网站程序一起备份的话,可以用FTP软件将整个网站下载到本地。
备份分为两部分,网页、数据库。
1.用ftp软件备份网页文件及设置
2.用系统提供的数据库管理软件,备份数据库。
还有一个办法,咨询你的代理商,他们有备份方案的。比上面的方法省事。