关于aws s3 数据库备份记录

1 篇文章 0 订阅

关于aws s3 数据库备份记录

最近需要使用mysql备份数据库,防止突发情况。
传统的备份一般都是直接备份到本机,或者其他地方,但是都是有点欠妥。比如那天服务器挂掉了,起不来了,传统数据库备份没有卵用。找了很多个备份服务器的,阿里云,腾讯云,亚马逊。为啥选择亚马逊,一是工作需要,而是真的很安全,阿里腾讯外围端口是全部开放的,亚马逊则是你开那个才有默认是全部关闭的。

安装aws cli

windows下安装

本机使用的是win7

首先检查现有python版本

快捷键win+R,输入cmd确定;打开cmd命令行输入python -V
aws-pythin-v.png
若小于2.7.9,请自行更新pythonb版本,cli官网上瞄到一眼说最低支持版本2.7.9,没研究之前版本会有什么问题,但是为了方便还是按要求来吧。

安装python pip 安装aws cli

下载python,你可以下载最新的,但是等下安装pip的时候一定要根据安装的版本来。
安装完了之后需要配置环境变量,就是把你安装python的路径配置到path;具体操作,我的电脑-右键-属性-高级系统设置-环境变量-系统变量,找到path,编辑在最后填上D:\Python27;D:\Python27\Scripts这是我的,你可以替换成你的安装路径。
接着再次打开cmd输入path查看是否配置成功,再次检查python版本python -V
aws-python.png
python安装完毕后需要安装pip,下载地址:https://pypi.python.org/pypi/pip#downloads
下载完成之后,解压到一个文件夹,用CMD控制台进入解压目录,输入
python setup.py install
正确安装完成之后需要加入path成为内部命令,将python目录下的scripts文件夹放入path中;就是上文中提到的环境配置。
输入pip测试是否正常
aws-pip
接着使用pip 安装awscli
输入pip install awscli 等待安装完毕;输入aws --version
aws-v

下载及安装 MSI installer

https://s3.amazonaws.com/aws-cli/AWSCLI64.msi
下载后直接运行,一路下一步(如果想更改安装位置的话,可以手动修改)
安装完成cmd输入aws --version
aws-v

linux下安装

本机使用 linux ubuntu

检查安装python

查看当前版本,我这个是更新过的,原来的版本2.7.4有点低,达不到要求害老夫一顿好整,哎

root@fyb:~t# python -V
Python 3.4.3

还原一下原本的更新过程:

# 查看现有python版本
python -V
# 若小于2.7.9,卸载当前版本
apt-get remove --auto-remove python
#更新源
sudo apt-get update
# 指定当前安装版本
sudo add-apt-repository ppa:jonathonf/python-3.6
# 安装python
sudo apt-get install python3.6
# 安装pip
sudo apt-get install python3-pip
# 更新pip
sudo pip install --upgrade pip

中间可能会出现一点问题,具体什么问题遇到找度娘,老夫这里不能重现了,已经折腾了一次了不想再被搞一次。

从pip安装awscli

输入pip install awscli,等待安装完成查看版本aws --version

配置awscli

通过aws configure命令来进行配置
至少提供访问密钥ID和秘密访问密钥,这将使用你的帐户创建一个带有~/.aws的文件夹(windows下应该在C:\Users\Administrator\.aws

 aws configure
 Access key ID:your_key_ID
 Secret access key:your_access_key
 Default region name:your_region_name
 Default output format:可忽略(默认json)

aws cli常用命令

 # 创建桶
 aws s3 mb s3://your_aws_name
 # 查看桶
 aws s3 ls
 # 查看桶信息
 aws s3 ls s3://your_aws_name
 # 删除桶
 aws s3 rb s3://your_aws_name
 # 本地上传s3服务器
 aws s3 cp file.xml s3://your_aws_name
 # s3服务器下载本地
 aws s3 cp s3://your_aws_name ./

shell 脚本备份mysql并上传到s3

#!/bin/bash
# this mysql backups

export DB_USER="you-db-user"
export DB_PASSWORD="you-db-password"
export DB_HOST="you-host"
export date_format=`date +%a`
export db_dir="/usr/local/fyb_test/$date_format"
export dest_backup_file="/usr/local/fyb_test/$date_format/mysql-databases-$date_format.tgz"
export s3_bucket="s3://your——name/"
rm -rf $db_dir
mkdir -p $db_dir 2>/dev/null
# If db_dir does not exist, create it:
if [ ! -d $db_dir ]; then
mkdir -p $db_dir
fi
# 将数据库转储到文件中
# Get all MySQL databases
mysqldump -u $DB_USER -h $DB_HOST -p$DB_PASSWORD --no-create-db --databases wifidb > $db_dir/wifidb-$date_format.sql
tar -zcvf $dest_backup_file -C $db_dir .
#压缩文件传到s3
aws s3 cp $dest_backup_file ${s3_bucket}
aws s3 ls ${s3_bucket}

新建一个文件修改名字为mysql_backups.sh,上传到linux服务器,设置定时任务每天备份或者其他时间

下载安装 cron

linux下执行命令sudo apt-get install cron
corn 使用简要说明

 # 启动状态
 service cron status
 # 启动
 service cron start
 # 关闭
 service cron stop
 
 # 查看当前任务计划
 crontab –l
 # 编辑
 crontab -e
 # 移除
 crontab –r
 -u user:用来设定某个用户的crontab服务;
 file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
 如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
 -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
 -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
 -r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
 -i:在删除用户的crontab文件时给确认提示。

切换到安装路径cd /var/spool/cron
设置定时任务crontab -e

HELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=you-email@163.com

0 0 * * * /you-path/mysql_backups.sh

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

这样就完成了定时备份mysql到s3

扩展

从s3 上下载下来并还原到数据库

#!/bin/bash
# this mysql download

export DB_USER="you-user"
export DB_PASSWORD="you-password"
export DB="you-db"
export date_format=`date +%a`
export db_dir="/usr/local/fyb_test/download/$date_format"
export s3_bucket="s3://you-name/mysql-databases-$date_format.tgz"
# rm -rf $db_dir
mkdir -p $db_dir 2>/dev/null
# If db_dir does not exist, create it:
if [ ! -d $db_dir ]; then
mkdir -p $db_dir
fi
#查看 s3目录
aws s3 ls ${s3_bucket}
# aws s3 cp ${s3_bucket} $db_dir
cd $db_dir
ls
tar -zxvf $db_dir/mysql-databases-$date_format.tgz .
ls
cd /usr/sbin
mysql -u $DB_USER -p$DB_PASSWORD --default-character-set=utf8 $DB <$db_dir/wifidb-$date_format.sql

新建文件命名为s3-mysql-download.sh,需要还原的时候直接执行文件即可。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无与伦比的傻

微信公众号:dasha500

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值