云网牛站
所在位置:首页 > Linux云数据库 > 将MySQL数据库备份到Amazon S3的方法

将MySQL数据库备份到Amazon S3的方法

2019-01-28 11:10:28作者:曾秀珠稿源:云网牛站

本文带你完成在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脚本的说明,看下面截图即可,非常容易:

将MySQL数据库备份到Amazon S3的方法

 

相关主题

如何在终端里备份并恢复MariaDB数据库

精选文章
热门文章