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