如何自动备份数据库后将备份自动上传到FTP服务器

 我来答
huanglenzhi
推荐于2018-05-17 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517195
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
这篇文章很有分享价值,因为我们在实际的生产环境中需要将数据库进行自动备份,然后上传到指定的位置,当然也可以像以下文章中所讲的一样,上传到你指定的FTP服务器中,从而实现Mysql数据库自动备份并上传到远程FTP服务器的部署,在Linux技术交流群中,也有朋友会遇到这方面的问题,可以将此文分享给群友共益。
注意:任何的操作都会具有风险性,请在本机实际测试通过之后再部署到服务器环境,这样即熟练的掌握了操作的技巧,也能在测试过程中发现问题,寻找解决方法。

说明:我这里要把MySql数据库存放目录/var/lib/mysql下面的data数据库备份到/home/mysql_data里面
并且保存为mysqldata_bak_2012_12_19.tar.gz的压缩文件格式(2012_12_19是指备份执行时当天的日期)
然后只保留最近7天的备份
再把备份文件通过ftp服务器上传到指定空间,只保留最近7天的数据
实现步骤:
1、创建保存备份文件的路径:/home/mysql_data
cd /home
mkdir mysql_data
2、创建备份脚本文件:/home/mysql_data/mysql_databak.sh
cd /home
cd mysql_data
touch mysql_databak.sh
vim mysql_databak.sh
输入以下内容:
#######################################################################################################
#!/bin/sh
DUMP=/usr/bin/mysqldump #mysqldump备份文件执行路径
OUT_DIR=/home/mysql_data #备份存放路径
LINUX_USER=root #系统用户名
DB_NAME=data #要备份的数据库名字
DB_USER=root #数据库账号 注意:非root用户要用备份参数 --skip-lock-tables,否则可能会报错
DB_PASS=123456 #数据库密码
DAYS=7 #DAYS=7代表删除7天前的备份,即只保留最近7天的备份
cd $OUT_DIR #进入备份存放目录
DATE=`date +%Y_%m_%d` #获取当前系统时间
OUT_SQL="$DATE.sql" #备份数据库的文件名
TAR_SQL="mysqldata_bak_$DATE.tar.gz" #最终保存的数据库备份文件名
$DUMP -u$DB_USER -p$DB_PASS $DB_NAME --default-character-set=utf8 --opt -Q -R --skip-lock-tables> $OUT_SQL #备份
tar -czf $TAR_SQL ./$OUT_SQL #压缩为.tar.gz格式
rm $OUT_SQL #删除.sql格式的备份文件
chown $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL #更改备份数据库文件的所有者
find $OUT_DIR -name "mysqldata_bak_*" -type f -mtime +$DAYS -exec rm {} \; #删除7天前的备份文件
deldate=` date -d -7day +%Y_%m_%d ` #获取7天前的时间
ftp -n<<!
open 192.168.1.1 21 #打开ftp服务器。21为ftp端口
user admin 123456 #用户名、密码
binary #设置二进制传输
cd mysqlbak #进入ftp目录(这个目录必须为ftp空间真实存在的目录)
lcd /home/mysql_data #列出本地目录
prompt
put mysqldata_bak_$DATE.tar.gz mysqldata_bak_$DATE.tar.gz #上传目录中的文件
delete mysqldata_bak_$deldate.tar.gz mysqldata_bak_$deldate.tar.gz #删除ftp空间7天前的备份
close
bye !
#######################################################################################################
3、修改文件属性,使其可执行
chmod +x /home/mysql_data/mysql_databak.sh
4、修改/etc/crontab
vi /etc/crontab
在下面添加
30 1 * * * root /home/mysql_data/mysql_databak.sh
表示每天凌晨1:30分执行备份
5、重新启动crond使设置生效
/etc/rc.d/init.d/crond restart
chkconfig crond on #设为开机启动
service crond start #启动
每天你在/home/mysql_data目录下面可以看到类似mysqldata_bak_2012_12_19.tar.gz这样的压缩文件
如果需要恢复文件的时候,只需要把这个文件解压即可
解压缩tar -zxvf mysqldata_bak_2012_12_19.tar.gz
至此,我们完成了Linux中Mysql数据库自动备份并上传到远程FTP服务器的部署。
百度网友fe406d2
2018-09-29
知道答主
回答量:12
采纳率:0%
帮助的人:5396
展开全部
FtpCopy是一款稳定可靠的数据自动备份软件,能够实现FTP数据和本地磁盘数据的定时自动备份,包含FTP自动下载、FTP自动上传、本地磁盘三种备份模式。同时FtpCopy还支持各种备份规则的设置。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c15c170
2020-07-16 · 贡献了超过161个回答
知道答主
回答量:161
采纳率:100%
帮助的人:9.6万
展开全部

这个很多ftp工具就能解决了,比如8Uftp,IIS7服务器管理工具

比如用IIS7,你可以设置定时上传下载,备份,自动更新,而且还是中文界面,按照要求设置一下就行了。

设置定时任务的界面:

此外,它不仅可以管理ftp,同时也是vnc的客户端iis7服务器管理工具,是服务器批量管理集成器.windows与linux都可以集成管理,可谓是非常方便.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式