通过FTP备份你的MySQL数据库

・4 分钟阅读

本文提供了在服务器上自动创建每日数据库备份的选项,并将它发送到备份服务器。

概述
  • 每天运行自动备份,备份发生的时间是可配置的,
  • 很多文件主机通过FTP提供文件传输,因此你可以自动会数据库发送到你的个人帐户,
  • 备份完成后它发送电子邮件,

描述

首先,创建和更改/backups目录。


 mkdir /backups
 cd /backups

然后,使用nano或你喜欢的编辑器创建脚本文件:

 
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"

LOG_FILE=/backups/backup-DATE.log

############### 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

############### Check and save log, also send an email ################

if test $? = 0
then
 echo"Database Successfully Uploaded to the Ftp Server!"
 echo -e"Database Successfully created and uploaded to the FTP Server!" | mail -s"Backup from $DATE" your_email@email.com

else
 echo"Error in database Upload to Ftp Server" > $LOG_FILE
fi

完成编辑脚本,并且保存文件后,我们使用以下命令使文件可执行:


 chmod +x backupdb.sh

你现在可以通过输入终端来测试它。


 /backups/backupdb.sh

完成执行后,键入ls -a以查看数据库是否已备份,也确认它是否被发送到你的FTP服务器。

如果一切正常,我们可以使用Crontab每天运行它。

Crontab节

你可以使用以下命令编辑你的crontab :

 crontab -e

这会打开一个文本编辑器,在那里你可以在一个新行输入你的时间表。

每个部分由一个空格分隔,最后一个部分有一个或多个空格,这是一个cron工作的布局:

分钟(0-59 ),小时(0-23,0 =午夜),日(1-31 ),月(1-12 ),星期(0-6,0 =周日),命令,

因此,在编辑器中,键入或粘贴此行:


 30 02 * * * /backups/backupdb.sh

上面的例子将在每一天凌晨02:30运行/backups/backupdb.sh。当然,你可以根据自己的喜好改变时间。

现在保存并关闭文件,在预定的时间内,将执行备份。

Huangzhongbang profile image