
一个用于备份MYSQL数据库并将其上传到Amazon S3的Shell脚本。
1. mysqldump + gzip + aws
使用mysqldump
转储数据库并将其gzip
压缩到一个文件夹中,稍后使用aws
命令将文件上传到Amazon S3
backup-script.sh
#!/bin/bash
################################################################
##
## MySQL Database To Amazon S3
## Written By: YONG MOOK KIM
################################################################
NOW=$(date +"%Y-%m-%d")
BACKUP_DIR="/home/mkyong/backup"
MYSQL_HOST="localhost"
MYSQL_PORT="3306"
MYSQL_USER="YOUR_DB_USER"
MYSQL_PASSWORD="YOUR_DB_PASSWORD"
DATABASE_NAME="YOUR_DB_NAME"
AMAZON_S3_BUCKET="s3://mkyong/backup/mysql/"
AMAZON_S3_BIN="/home/mkyong/.local/bin/aws"
FOLDERS_TO_BACKUP=("/home/mkyong/bk1" "/home/mkyong/bk2")
#################################################################
mkdir -p ${BACKUP_DIR}
backup_mysql(){
mysqldump -h ${MYSQL_HOST} \
-P ${MYSQL_PORT} \
-u ${MYSQL_USER} \
-p${MYSQL_PASSWORD} ${DATABASE_NAME} | gzip > ${BACKUP_DIR}/${DATABASE_NAME}-${NOW}.sql.gz
}
# backup any folders?
backup_files(){
tar -cvzf ${BACKUP_DIR}/backup-files-${NOW}.tar.gz ${FOLDERS_TO_BACKUP[@]}
}
upload_s3(){
${AMAZON_S3_BIN} s3 cp ${BACKUP_DIR}/${DATABASE_NAME}-${NOW}.sql.gz ${AMAZON_S3_BUCKET}
}
backup_mysql
upload_s3
2.如何运行?
将执行权限分配给shell脚本,然后直接运行它。
Terminal
$ chmod +x backup-script.sh
# run it
$ ./backup-script.sh
3.每天运行
3.1 cron
计划每天运行脚本。
Terminal
$ crontab -e
# Daily, 7pm
0 19 * * * /path.to/backup-script.sh > /dev/null 2>&1
参考文献
翻译自: https://mkyong.com/linux/linux-script-to-backup-mysql-to-amazon-s3/