本文带你完成在Ubuntu和基于CentOS的MySQL服务器上将MySQL数据库备份到Amazon S3。
简介
Amazon S3是Amazon Web Services提供的Web服务,它通过Web服务接口提供存储,并提供存储在其上的对象的API,由于S3是高度可用的分布式对象存储服务,因此它是存储关键数据(如不占用大量空间的数据库)的理想场所,在通过API与S3交互之前,需要安装提供aws命令的awscli工具。
在CentOS、Ubuntu和MacOS上安装awscli
要在CentOS 7上安装awscli的要求是Python 2版本2.6.5+或Python 3版本3.3+(在CentOS系统中安装最新版Python 3.7.0),请运行命令:
$ sudo yum install python-pip # 对于CentOS系统
$ sudo apt-get python-pip # 对于Debian、Ubuntu系统
$ brew install python3 && curl -O https://bootstrap.pypa.io/get-pip.py \
&& python3 get-pip.py --user # 对于MacOS系统
然后从pip安装awscli:
$ sudo pip install awscli
$ pip3 install awscli --upgrade --user # For python3
通过运行aws -version验证是否正确安装了AWS CLI:
$ aws --version
aws-cli/1.14.45 Python/3.6.4 Darwin/17.4.0 botocore/1.8.49
AWS CLI定期更新,以添加对新服务和命令的支持,要更新到最新版本的AWS CLI,请再次运行安装命令:
$ pip install awscli --upgrade --user
如果需要卸载AWS CLI,请使用pip uninstall:
$ pip uninstall awscli
配置awscli
使用你的用户帐户配置AWS CLI工具:
# aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
至少提供访问密钥ID和秘密访问密钥,这将使用你的帐户创建一个带有~/.aws的文件夹:
$ ls .aws
config credentials
转储MySQL数据库
现在是时候备份MySQL数据库了,我们首先需要导出一些用于转储MySQL数据库的变量:
export DB_USER="root"
export DB_PASSWORD=""
export DB_HOST="localhost"
export date_format=`date +%a`
export db_dir="/tmp/databases/$date_format"
export dest_backup_file="/tmp/mysql-databases-$date_format.tgz"
export s3_bucket="s3://bucket-name"
mkdir -p $db_dir 2>/dev/null
如果db_dir不存在,则创建它:
if [ ! -d $db_dir ]; then
mkdir -p $db_dir
fi
接下来要做的是将数据库转储到文件中:
# Get all MySQL databases
databases=`mysql -u $USER -h $HOST -p$PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
# Dump all databases
for db in $databases; do
if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != "mysql" ]] && [[ "$db" != _* ]] ; then
echo "Dumping database: $db"
mysqldump -u $USER -h $HOST -p$PASSWORD --databases $db > $db_dir/$db-$date_format.sql
fi
done
除mysql和performance_schema之外的所有数据库都将导出到指定的db_dir值。
将MySQL数据库备份到S3
你已导出所有数据库,并且应该准备将它们备份到s3,在同步到s3之前压缩它们:
# tar -zcvf $dest_backup_file -C $db_dir .
# aws s3 cp $dest_backup_file ${s3_bucket}
这会将压缩文件上传到AWS S3,完成后,使用以下方法检查内容:
# aws s3 ls ${s3_bucket}
附:脚本化方式将MySQL数据库备份到S3的说明
用于将MySQL数据库备份到s3的Bash脚本的说明,看下面截图即可,非常容易:
相关主题