DBA 在部署数据库后应该做的第一件事是确保定期创建备份。
但是,将备份文件存储在与 MySQL 服务器所在的同一台服务器上将是一个很大的错误。因此,应该创建一个备份,并将其放在 MySQL 所在的服务器之外。最简单的解决方案是通过 FTP 将其传输到另一台服务器。
使用 BASH 脚本将备份传输到 FTP
Ubuntu 默认有一个 FTP 客户端,尽管使用起来不是特别方便,尤其是在 bash 脚本中。LFTP 实用程序更方便,可以使用下面两个命令安装它。
sudo apt-get update -y
sudo apt-get install -y lftp
要创建备份、压缩它、将其传输到 FTP,然后删除超过 7 天的文件,请使用以下脚本:
#credentials to connect to mysql
mysql_user=me
mysql_password=1234
#credentials to connect to ftp
FTPUSER=one
FTPPW=1234
FTPSERVER=localhost
#directory that will be created on ftp and the one that will be deleted
TODAY=$(date +"%Y_%m_%d")
RMDATE=$(date +"%Y_%m_%d" -d '7 days ago')
TMPDIR=~/backup
mysql_backup_file=$TMPDIR/backup.sql
echo -n "Database dump"
mysqldump -u $mysql_user -p$mysql_password --all-databases > $mysql_backup_file &&
echo -n "Dump compression"
gzip $mysql_backup_file
echo -n "Uploading files via FTP... "
lftp << EOF
open ${FTPUSER}:${FTPPW}@${FTPSERVER}
cd backups/
mkdir ${TODAY}
cd ${TODAY}
mput -E ${TMPDIR}/*
cd ..
rm -rf ${RMDATE}
bye
EOF
echo "Done."
现在剩下的就是安排脚本定期执行 cron 任务。
crontab -e
并在文件末尾添加以下字符串:
30 22 * * * /home/user/script/mysql_backup.sh
请注意,上面的脚本有一个明显的缺点,就是如果跳过脚本的启动,那么旧的备份将不会被删除,它会保留在 FTP 上。
解决方案必须可靠
可能发生的最糟糕的事是,当需要备份文件时,结果备份任务在很久之前就中断了。
在 bash 脚本中配置的脚本可能会因多种原因停止工作。下面列举一些可能的原因:
- 数据库密码已更改;
- FTP密码已更改;
- MySQL 设置已更改,导致备份创建错误;
- 磁盘空间不足(没有足够的空间来创建备份);
- 与 FTP 相关的网络更改:FTP 服务器移动、地址更改、防火墙。
因此,定期备份的解决方案,应该在发生故障后及时通知我们,以便可以随时检查一切是否正常。
任何 Linux 问题都可以使用 bash 脚本解决,但创建真正可靠的解决方案可能需要大量时间。
第三方解决方案
SqlBak 服务是一种基于代理的服务,用于创建 MySQL、PostgreSQL、MongoDB 和 SQL Server 备份。备份相关活动的整个历史记录显示在单个仪表板上。如果出现问题,该服务会立即通知您。
SqlBak 还拥有许多有用的特性:
- 将备份传输到各种云存储:Dropbox、Google Drive、OneDrive、Amazon S3、Azure、Backblaze、Wasabi。
- 备份加密。
- 邮件通知。
- 文件夹备份。
- 自动备份恢复到另一台服务器。
要使用 SqlBak 备份 MySQL 服务器,您需要在服务器上安装客户端。该应用程序可以通过标准包管理器安装。
在服务器上安装 SqlBak 后,它会出现在您的 仪表板 页面上。
现在您必须设置与 MySQL 服务器数据库的连接。可以通过以下命令完成:
sudo sqlbak --add-connection --db-type=mysql --user=root
安装了应用程序并设置了连接,就应该进行创建备份操作了。为此,请单击“添加新任务”按钮并选择“创建任务”。
转到“选择数据库”部分,然后选择要备份的所有数据库。
下一步是选择备份的目标位置。在“将备份存储在目标”部分中,从列表中选择 FTP 并添加适当的设置。
向下滚动到“计划备份”部分并设置您需要的备份计划。请注意,使用 Linux 上的 SqlBak,您也可以运行增量备份。
如果您希望在备份成功或失败时收到通知,请转到“发送电子邮件确认”部分并添加您的电子邮件。要通过多个电子邮件接收通知,请指定它们,用逗号分隔。
下面,在备份操作设置页面,可以找到其他有用的设置,例如:执行前后脚本、加密和备份文件夹等等。
设置备份操作时另一个有用的选项是“还原任务”,可以使用它配置还原过程以将新创建的文件还原到不同的数据库服务器。
您可以通过单击“立即运行”按钮检查设置,备份操作将立即启动并显示在作业执行日志中。
作者:牛奇网,本站文章均为辛苦原创,在此严正声明,本站内容严禁采集转载,面斥不雅请好自为之,本文网址:https://www.niuqi360.com/linux/how-to-automatically-upload-mysql-backup-to-ftp-on-linux/