简介:本文主要介绍怎么将数据库服务器上的数据文件进行封装并自动上传到指定的FTP服务器,实现数据文件的异地备份。其具体措施是提前部署好FTP服务器,然后将数据库服务器的需要备份的数据文件进行压缩并移动到其他文件夹下,最后通过expect封装账号密码并通过scp上传到FTP服务器保存。确保本地和FTP服务端各存一份,实现数据异地备份。

数据异地备份的意义就在于,当受到网络攻击、入侵、电源故障或者操作失误等事故的发生后,可以完整、快速、简捷、可靠地恢复原有系统,在一定的范围内保障系统的正常运行。

详细内容请参考下文。

一、登录linux系统

通过scp和expect命令实现文件自动封装并上传到FTP服务器(通过scp和expect命令实现文件自动封装并上传到FTP服务器)(1)

二、查看mysql服务运行状态

通过scp和expect命令实现文件自动封装并上传到FTP服务器(通过scp和expect命令实现文件自动封装并上传到FTP服务器)(2)

三、数据库备份封装并上传到FTP服务器

1、安装依赖工具expect

执行指令# yum install -y expect

通过scp和expect命令实现文件自动封装并上传到FTP服务器(通过scp和expect命令实现文件自动封装并上传到FTP服务器)(3)

2、本地数据库备份

先执行指令# mkdir -p /backup/`date " %Y-%m-%d"`

创建当天日期命名的目录。如下图

通过scp和expect命令实现文件自动封装并上传到FTP服务器(通过scp和expect命令实现文件自动封装并上传到FTP服务器)(4)

然后执行指令# /usr/bin/mysqldump -p -B -F -R -x --master-data=2 -uroot -p pythondb > /backup/date_$(date ' %Y%m%d').sql

备份pythondb数据表到/backup目录中。如下图

通过scp和expect命令实现文件自动封装并上传到FTP服务器(通过scp和expect命令实现文件自动封装并上传到FTP服务器)(5)

最后执行指令# tar -zcvf date_20221014.tar.gz date_20221014.sql

加压备份文件。如下图

通过scp和expect命令实现文件自动封装并上传到FTP服务器(通过scp和expect命令实现文件自动封装并上传到FTP服务器)(6)

3、编写异地备份脚本

执行脚本# scp -C -r /backup/2022-10-14/ root@172.16.27.48:/usr/local/backup/

上传备份文件到FTP服务器。如下图

通过scp和expect命令实现文件自动封装并上传到FTP服务器(通过scp和expect命令实现文件自动封装并上传到FTP服务器)(7)

查看FTP服务器端对应目录。如下图

通过scp和expect命令实现文件自动封装并上传到FTP服务器(通过scp和expect命令实现文件自动封装并上传到FTP服务器)(8)

4、使用expect封装scp异地备份脚本

先编写使用expect封装账号和密码的scp传输脚本。如下所示

通过scp和expect命令实现文件自动封装并上传到FTP服务器(通过scp和expect命令实现文件自动封装并上传到FTP服务器)(9)

然后保存该文件为scp-backup.sh

最后,执行计划任务指令# crontab –e编写备份任务。如下图

* * * * * /usr/local/scp-backup.sh

格式说明:第1列为分钟,0~59;第2列为小时,0~23;第3列为日期,1~31;第4列为月份,1~12;第5列为星期,0~7(0和7表示星期天);第6列为要运行的命令(如果有多个命令用 && 隔开)。

,