簡體   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