首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

linux SHELL定时备份数据库并上传入指定FTP

2013-10-23 
linux SHELL定时备份数据库并上传到指定FTP网站数据备份是每一个站长必备的技能,做了数据备份可以降低网络

linux SHELL定时备份数据库并上传到指定FTP
网站数据备份是每一个站长必备的技能,做了数据备份可以降低网络数据被丢失的风险。数据库备份时一般有四种方法

1) 直接拷贝数据库文件(不推荐)

2) 使用mysqlhotcopy备份数据库

3) 使用mysqldump备份数据库

4) 使用主从复制机制(replication)(实现数据库实时备份)

我们今天说说使用mysqldump对数据库不停机做备份。在/root/目录下新建databasebackup.sh文件并复制下面的代码为文件内容。并修改配置信息
linux SHELL定时备份数据库并上传到指定FTP

#!/bin/sh
#!技术部分享 http://www.jishubu.net
        
# 定义变量,请根据具体情况修改
# 定义脚本目录
scriptsDir=`pwd`
        
# 定义用于备份数据库的用户名和密码
user=root
userPWD=123456
        
# 定义备份数据库名称
dbNames=(jishubu xingzhengbu shichangbu)
        
# 定义备份目录
dataBackupDir=/home/backup
        
# 定义备份日志文件
logFile=$dataBackupDir/log/mysqlbackup.log
        
# DATE=`date -I`
DATE=`date -d "now" +%Y%m%d`
        
echo `date -d "now" "+%Y-%m-%d %H:%M:%S"` > $eMailFile
        
for dbName in ${dbNames}do
# 定义备份文件名
dumpFile=$dataBackupDir/db/$dbName-$DATE.sql.gz
        
# 使用mysqldump备份数据库,请根据具体情况设置参数
/usr/local/mysql/bin/mysqldump -u$user -p$userPWD $dbName | gzip > $dumpFile
if [[ $? == 0 ]]; then
echo "DataBase Backup Success!" >> $eMailFile
else
echo "DataBase Backup Fail!" >> $emailFile
fi
        
# 写日志文件
echo "================================" >> $logFile
cat $eMailFile >> $logFile
echo $dumpFile >> $logFile
        
done
        
        
# ftp上传备份
for dbName in ${dbNames}do
file1=$dbName-$DATE.sql.gz
        
        
ftp -v -n 127.0.0.1<<EOF
user jishubu 123456
bi
cd mysql
lcd $dataBackupDir/db
mput $file1
bye
EOF
        
done

本shell运行前请手动建立/home/backup/db /home/backup/log 目录。shell 运行前记得添加执行权限 chmod 777 databasebackup.sh

修改改好后添加定时任务

crontab -e

01 03 * * * /root/databasebackup.sh >>/home/backup/log/crontablog.txt

热点排行