CentOS自动备份mysql并上传到远程ftp脚本

一,定时备份mysql数据库

安全起见,直接用Root执行的:

 代码如下 复制代码

/root/mysql_backup.sh
# everyday 3:00 AM execute database backup
3 0 * * * /root/mysql_backup.sh

以下是自动自动备份shell,只保留最新5天

 代码如下 复制代码

#!/bin/sh 
# mysql_backup.sh: backup mysql databases and keep newest 5 days backup. 

# db_user is mysql username 
# db_passwd is mysql password 
# db_host is mysql host 
# —————————– 
db_user="root" 
db_passwd="zhoz.com" 
db_host="localhost" 

# the directory for story your backup file. 
backup_dir="/home/zhozdbbackup" 

# date format for backup file (dd-mm-yyyy) 
time="$(date +"%d-%m-%Y")" 

# mysql, mysqldump and some other bin's path 
MYSQL="/usr/bin/mysql" 
MYSQLDUMP="/usr/bin/mysqldump" 
MKDIR="/bin/mkdir" 
RM="/bin/rm" 
MV="/bin/mv" 
GZIP="/bin/gzip" 

# check the directory for store backup is writeable 
test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 0 

# the directory for story the newest backup 
test ! -d "$backup_dir/backup.0/" && $MKDIR "$backup_dir/backup.0/" 

# get all databases 
all_db="$($MYSQL -u $db_user -h $db_host -p$db_passwd -Bse 'show databases')" 
for db in $all_db 
do 
$MYSQLDUMP -u $db_user -h $db_host -p$db_passwd $db | $GZIP -9 > "$backup_dir/backup.0/$time.$db.gz" 
done 

# delete the oldest backup 
test -d "$backup_dir/backup.5/" && $RM -rf "$backup_dir/backup.5" 

# rotate backup directory 
for int in 4 3 2 1 0 
do 
if(test -d "$backup_dir"/backup."$int") 
then 
next_int=`expr $int + 1` 
$MV "$backup_dir"/backup."$int" "$backup_dir"/backup."$next_int" 
fi 
done 
exit 0;

上面备份不会自动上传到ftp服务器了,我们可以参考下面实例

二,自动备份mysql并上传到远程ftp脚本

生产需要,在centos 5.4下自动备份mysql数据库并上传到远程ftp,花了点时间,脚本如下:

 代码如下 复制代码

#!/bin/bash
#auto ftp bakup
#by xhat 2010.06.08

#要备份的数据库
DBName=wwwdbname

#ftp账号信息
ftphost="test.com"
ftpuser=username
ftppass=passwd

#mysql账号信息
DBUser=root
DBPasswd=123456

BackupPath=./

NewFile="$BackupPath"db$(date +%y%m%d).tar.gz
DumpFile="$BackupPath"db$(date +%y%m%d).sql
OldFile="$BackupPath"db$(date +%y%m%d --date='1 days ago').tar.gz
#LogFile="$BackupPath"db$(date +%y%m%d --date='1 days ago').txt

echo "---------------------------"
echo $(date +"%y-%m-%d %H:%M:%S")
echo "---------------------------"

#删除
if [ -f $OldFile ]; then
rm -f $OldFile
echo "[$OldFile]Delete Old File Success!"
fi

#新
if [ -f $NewFile ]; then
echo "[$NewFile] 已经存在,不再备份! "
else
/opt/mysql/mysqldump -u$DBUser -p$DBPasswd $DBName > $DumpFile
sleep 5
tar czvf $NewFile $DumpFile
rm $DumpFile -rf
echo "[$NewFile]备份成功"
fi

echo "打开ftp"
ftp -i -in < open $ftphost 21
user $ftpuser $ftppass
cd /
mput *.tar.gz
bye
!

echo "备份完成"

完成上面脚本后,在crontab里面加入每天凌晨定时执行即可。

 代码如下 复制代码
10 3 * * * /opt/bak/mybak

小结

其实方法一我们可以使用rsync同步来进行同步己经备份好的数据,在ftp与rsync相比rsync性能与稳定性是ftp无法比较的。

时间: 2024-08-04 03:21:28

CentOS自动备份mysql并上传到远程ftp脚本的相关文章

实现Linux中Mysql数据库自动备份并上传到远程FTP服务器

这篇文章很有分享价值,因为我们在实际的生产环境中需要将数据库进行自动备份,然后上传到指定的位置,当然也可以像以下文章中所讲的一样,上传到你指定的FTP服务器中,从而实现Mysql数据库自动备份并上传到远程FTP服务器的部署,在Linuxhttp://www.aliyun.com/zixun/aggregation/31093.html">技术交流群中,也有朋友会遇到这方面的问题,可以将此文分享给群友共益. 注意:任何的操作都会具有风险性,请在本机实际测试通过之后再部署到服务器环境,这样即熟

Linux定时自动备份数据库并上传至FTP的脚本

适用于使用lnmp环境下定时自动备份网站和mysql数据库并上传至FTP:  代码如下 复制代码 •#!/bin/bash •MYSQL_USER=root •MYSQL_PASS=root •FTP_USER=ftp •FTP_PASS=123456 •FTP_IP=www.is36.com •FTP_backup=/public_html/ •WEB_DATA=/home/wwwroot/ • •DataBakName=Data_$(date +"%Y%m%d").tar.gz •

CentOS 系统实现自动备份MYSQL 发往远程FTP

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 网站最重要的是数据,可明天手动备份还是太繁琐了,而且8630.html">有时候怕忘记,尤其是使用VPS的朋友,说不定那天IDC 跑路了就完蛋了,所以今天给大家准备一个自动备份MYSQL数据库的脚本,网上有不少类似的脚本,不过测试了几个不是这个问题就是那个问题,要不就只能备份单个数据库导出SQL文件.反正不是特别理想.晚上选择

Linux自动备份MySQL数据库的实用方法

MySQL定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系统定期备份数据. ◆1.创建备份文件夹 #cd /www #makedir backup ◆2.编写运行脚本 #vi autobackup 写入以下内容: filename=`date +%Y%m%d` mysql_bin_dir/mysqldump –opt dataname -u user -ppassword gzip > /www/mysqlbackup/name$filename.gz 保存退

Linux自动备份MySQL数据库

MySQL定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系 统定期备份数据. 1.创建备份文件夹 #cd /www #makedir backup 2.编写运行脚本 #vi autobackup 写入以下内容: filename=`date +%Y%m%d` mysql_bin_dir/mysqldump –opt dataname -u user -ppassword | gzip > /www/mysqlbackup/name$filename.gz 保存

mysqldump使用脚本自动备份mysql数据库

问题描述 mysqldump使用脚本自动备份mysql数据库 在linux服务器使用脚本自动数据库时,报如下错误,备份不成功,求问大神如何解决:Warning: Using a password on the command line interface can be insecure 以下是我的脚本:#!/bin/shDUMP=/usr/local/mysql/bin/mysqldumpOUT_DIR=/home/dbbak/todayOUT_HISTORY_DIR=/home/dbbak/o

php取mysql,上传到服务器后,显示中文为乱码

问题描述 php取mysql,上传到服务器后,显示中文为乱码 数据表是utf8_general_ci编码,字段值 é?–é???????-???????‰? 对应的是 首页宽幅幻灯片 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> ... //mysql_query( "SET NAMES UTF8" ); $result = mysql_que

远程图片自动按文件夹上传到服务器-默飞出品_小偷/采集

<% '远程图片自动按文件夹上传到服务器 '制作:默飞 Server.ScriptTimeOut=99999 savepath="upfiles" '图片保存路径,可以根据自己的需要,进行修改,如没有创建此文件夹,系统将自动创建 'QQ:33224360 'HOME:http://mofei.xinxiu.com 'EMAIL:mofei5@yahoo.com.cn '2005-10-15 '版权说明不影响资源,请保留版权信息 imgpath=request("imgp

Linux自动备份MySQL数据库脚本代码

下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行.在脚本中可设置需要备份的数据库表清单,并且会将备份文件通过gzip压缩.需要注意的是,这段脚本仅适用数据一致性要求不高的环境.  代码如下 复制代码 #!/bin/bash mysql_pwd="password" mysql_dump="/usr/local/mysql/bin/mysqldump" cur_year=$(date +"%Y&