s3 备份记录

关于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有点低,达不到要求害老夫一顿好整,哎

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看现有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

1
2
3
4
5
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常用命令

1
2
3
4
5
6
7
8
9
10
11
12
# 创建桶
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/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 使用简要说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 启动状态
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 上下载下来并还原到数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/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,需要还原的时候直接执行文件即可。

如果本文对您有所帮助,请打赏给我吧,我先送个你也红包往下看,你可以把扫到红包打赏个我哦!
红包

本文标题:s3 备份记录

文章作者:範範

发布时间:2019年08月20日 - 09:08

最后更新:2019年09月11日 - 15:09

原始链接:https://trhsy.github.io/s3-mysql-backups.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------The End-------------
範範 wechat
欢迎关注微信公众号,孬蛋等着你!
坚持原创技术分享,您的支持将鼓励我继续创作!