这篇文章教大家一个方法,实现每天自动备份MySQL数据库,并上传到某个FTP服务器中实现异地备份,适用于各类Linux操作系统的云服务器。
首先在云服务器上创建备份目录
mkdir /backups
cd /backups
然后编辑备份脚本。
nano backupdb.sh
备份脚本内容如下,第一部分的参数需要根据实际情况做调整。
#!/bin/bash
############### Infos - Edit them accordingly ########################
DATE=`date +%Y-%m-%d_%H%M`
LOCAL_BACKUP_DIR="/backups"
DB_NAME="database_name"
DB_USER="root"
DB_PASSWORD="root_password"
FTP_SERVER="111.111.111.111"
FTP_USERNAME="ftp-user"
FTP_PASSWORD="ftp-pass"
FTP_UPLOAD_DIR="/upload"
############### Local Backup ########################
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | gzip > $LOCAL_BACKUP_DIR/$DATE-$DB_NAME.sql.gz
############### UPLOAD to FTP Server ################
ftp -nv $FTP_SERVER << EndFTP
user "$FTP_USERNAME" "$FTP_PASSWORD"
binary
cd $FTP_UPLOAD_DIR
lcd $LOCAL_BACKUP_DIR
put "$DATE-$DB_NAME.sql.gz"
bye
EndFTP
保存备份脚本后,为该脚本增加可执行权限。
chmod +x backupdb.sh
执行该脚本,测试数据库是否备份成功,并上传到FTP服务器中。
/backups/backupdb.sh
如果备份脚本一切正常,下面就可以设置定时任务,实现每天自动备份一次。
定时任务是由分钟(0-59)、小时(0-23)、日(1-31)、月(1-12)、周天(0-6)加上命令行组成。输入以下命令编辑定时任务。
crontab -e
在定时任务编辑界面,增加下面一行代码。
30 02 * * * /backups/backupdb.sh
以上代码的含义是每天凌晨2:30执行一次备份脚本,可根据需要进行调整。最后保存定时任务即可生效。