一 Myql备份到本地
#!/bin/bash
#标记程序开始时间
date_start=`date|awk -F"[ :]" '{print $4*3600 + $5*60 +$6}'`
#进入要备份的目录
cd /usr/backup
#数据库备份命令,包括存储过程,使用utf8字符编码,以"global_日期"命名
/usr/local/mysql/bin/mysqldump --opt -R -uroot -proot --default-character-set=utf8 global>global_$(date +%Y%m%d).sql
#/将数据库备份文件进行压缩
tar zcvf global_$(date +%Y%m%d).tar.gz global_$(date +%Y%m%d).sql
#备份完后将原文件删除
rm -rf global_$(date +%Y%m%d).sql
#删除备份时间超过100天的备份文件
rm -rf global_$(date -d -100day +%Y%m%d ).tar.gz
#标记程序结束时间
date_end=`date|awk -F"[ :]" '{print $4*3600 + $5*60 +$6}'`
#计算程序执行时间
time=`expr "$date_end" - "$date_start"`
#生成日志文件
echo 'backup database global in' $(date +%Y-%m-%d%H:%M:%S) >> /usr/backup/dbbackup.log
#结束
echo 'Database backup time' $time >> /usr/backup/dbbackup.log
二 把备份用ftp传送到目的计算机
1 新建本地用户或虚拟用户作为ftp传输帐号 制定存储目录
1.1使用本地用户 backuper 组backuper 密码backup
目录在/usr/sqlbackup
#sudo groupadd backuper
#sudo useradd -g backuper backuper -d /usr/sqlbackup -m
#sudo passwd backuper
1.2 使用虚拟用户
增加新用户在/home/virtual中添加 vi /home/virtual
添加后使用以下命令更新 db_load -T -t hash -f /home/virtual /etc/virtual.db
添加用户配置文件 cd /etc/vsftpd_user_conf/ vi [用户名]
添加以下内容
virtual_use_local_privs=YES
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/virtualuser/<用户名>
保存寻出
进入目录:cd /home/virtualuser
创建目录:mkdir <用户名>
chmod 777 <用户名>
重启 vsftp :service vsftpd restart
如新用户无法登陆,执行一次
chown -R virtualuser:virtualuser /home/virtualuser
上述是在centos下添加虚拟用户的方法
本次实例 用户名为backuper 密码为backup
目录/home/virtualuser/backuper
2安装配置vsftpd
#sudo apt-get install vsftpd
配置文件/etc/vsftpd.conf
不允许匿名
允许上传权限
3 FTP传输数据库备份脚本sql_ftp.sh 放在/usr/backup处
############################################################################
#ftp -i -v -n 121.14.17.192 <
#user backuper backup
#binary
#put global_$(date +%Y%m%d).tar.gz
#bye
#END_FTP
###############################################################################
三 最终脚本:(以备份global数据库为例 globalbackup.sh)
#!/bin/bash
#标记程序开始时间
date_start=`date|awk -F"[ :]" '{print $4*3600 + $5*60 +$6}'`
#进入要备份的目录
cd /usr/backup
#数据库备份命令,包括存储过程,使用utf8字符编码,以"global_日期"命名
/usr/local/mysql/bin/mysqldump --opt -R -uroot -proot --default-character-set=utf8 global>global_$(date +%Y%m%d).sql
#将数据库备份文件进行压缩
tar zcvf global_$(date +%Y%m%d).tar.gz global_$(date +%Y%m%d).sql
#把数据库备份文件用ftp上传到相应地址
ftp -i -v -n 122.14.14.192 <
user backuper backup
binary
put global_$(date +%Y%m%d).tar.gz
bye
END_FTP
#备份完后将原文件删除
rm -rf global_$(date +%Y%m%d).sql
#删除备份时间超过100天的备份文件
rm -rf global_$(date -d -100day +%Y%m%d ).tar.gz
#标记程序结束时间
date_end=`date|awk -F"[ :]" '{print $4*3600 + $5*60 +$6}'`
#计算程序执行时间
time=`expr "$date_end" - "$date_start"`
#生成日志文件
echo 'backup database global in' $(date +%Y-%m-%d%H:%M:%S) >> /usr/backup/dbbackup.log
#结束
echo 'Database backup time' $time >> /usr/backup/globalbackup.log
四 脚本使用方法:
1 新建目录 /usr/backup 有读写权限 把脚本放进该目录 脚本可执行
2 把脚本名修改为数据库名 如数据库名为global 则脚本名为globalbackup.sh
把脚本里面的global数据库名 改为相应的数据库名 即替换所有的global
把数据库用户密码修改为相应的用户密码
把ftp上传地址改为120.132.123.125
本地备份保留时间默认为100天 按需修改
执行脚本 sudo sh globalbackup.sh
3 执行成功后 增加cron计划任务 定时执行脚本
#crontab -e
分 时 日 月 周
00 02 * * * sudo sh /usr/backup/dbbackup.sh
各个vps设置的时间注意要分开