詳細使用方法請參閱 Github.熱備份最好使用 Xtrabackup
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #!/bin/bash
# Settings TIMESTAMP=$(date +"%F")
BACKUP_DIR="backup/$TIMESTAMP" MYSQL_USER="BACKUP_USER" MYSQL_PASS="BACKUP_PASSWORK" MYSQL_SELF="/usr/local/mysql/bin/mysql" MYSQL_DUMP="/usr/local/mysql/bin/mysqldump"
DROPBOX_PATH="/Backup/MySQL/All"
# Create backup directory mkdir -p $BACKUP_DIR
# Get all database databases=`$MYSQL_SELF -u $MYSQL_USER -p"$MYSQL_PASS" -e 'SHOW DATABASES;' | grep -Ev "(Database|information_schema)"`
for database in $databases; do echo "Dumping $database" $MYSQL_DUMP --force --opt -u $MYSQL_USER -p"$MYSQL_PASS" --database $database | gzip > "$BACKUP_DIR/$database.gz" done
# Zip databases to one file then remove all databases tar zcvf $BACKUP_DIR.tar.gz $BACKUP_DIR rm -rf $BACKUP_DIR
# Put to dropbox put_cmd="/opt/dropbox_uploader.sh upload $BACKUP_DIR.tar.gz $DROPBOX_PATH/$TIMESTAMP.tar.gz" echo $put_cmd && `$put_cmd`
# Remove from dropbox (expire 6 day files) delete_cmd="/opt/dropbox_uploader.sh delete $DROPBOX_PATH/$(date -v -6d +'%F').tar.gz" echo $delete_cmd && `$delete_cmd`
# Remove backup zip file rm -rf $BACKUP_DIR
|