繁体   English   中英

Ubuntu服务器上的MySQL自动备份

[英]Mysql Auto Backup on ubuntu server

经过几个月的尝试,我找到了可以完成工作的shell脚本。

这是我正在使用的代码

#!/bin/bash
### MySQL Server Login Info ###
MUSER="root"
MPASS="MYSQL-ROOT-PASSWORD"
MHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
BAK="/backup/mysql"
GZIP="$(which gzip)"
### FTP SERVER Login info ###
FTPU="FTP-SERVER-USER-NAME"
FTPP="FTP-SERVER-PASSWORD"
FTPS="FTP-SERVER-IP-ADDRESS"
NOW=$(date +"%d-%m-%Y")

### See comments below ###
### [ ! -d $BAK ] && mkdir -p $BAK || /bin/rm -f $BAK/* ###
[ ! -d "$BAK" ] && mkdir -p "$BAK"

DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
 FILE=$BAK/$db.$NOW-$(date +"%T").gz
 $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE
done

lftp -u $FTPU,$FTPP -e "mkdir /mysql/$NOW;cd /mysql/$NOW; mput /backup/mysql/*; quit" $FTPS

一切运行良好,但是我想修复一些问题,但是对于shell脚本却一无所知。 我不是要别人写它。 只是一些指针。 首先,服务器上的/ backup / mysql目录在每次备份时都会将文件堆叠在一起。 没什么大不了的。 但是,在每晚备份一年之后,它可能会变得有点满。 所以id喜欢它,以便在上传后清除该目录。 另外我也不想让我的托管服务超载文件ID这样的文件,以便在上传之前清除远程服务器目录。 最后,我希望它上传到远程服务器上的子目录,例如/ mysql

为什么要重新发明轮子? 您可以只使用Debianautomysqlbackup软件包(也应该在Ubuntu上可用)。

至于清理旧文件,以下命令可能会有所帮助:

find /mysql -type f -mtime +16 -delete

可以使用scp (1)命令上传到远程服务器;
为避免出现密码提示,请阅读有关SSH公钥身份验证的信息

看一下Backup ,它使您可以使用功能非常强大的Ruby DSL对备份作业进行建模。

支持多个数据库和最流行的在线存储,以及许多很酷的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM