如何自动备份MySQL数据库到FTP服务器?

  • 发布时间:2022-02-06 20:16:02
  • 阅读次数:1016

这篇文章教大家一个方法,实现每天自动备份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执行一次备份脚本,可根据需要进行调整。最后保存定时任务即可生效。

【全文完】

< 上一篇:如何创建逻辑备份并还原MySQL数据库? 下一篇:如何查看MySQL正在连接的进程? >