关于AWS的备份策略
AWS有一个很强大的功能,就是snapshot,翻译过来就是对EBS进行快照。通俗的说,即是对整个硬盘进行完整的镜像备份。如此一来,在其中一台EC2挂掉的时候,我们迅速的另起一台EC2,并将通过快照恢复的EBS挂载到新的实例上,即可完成新主机的服务的切换和恢复。snapshot用于非root或者非C盘的数据备份是极好的。然而,一旦涉及到root或者C盘,就会有一些坑了。所以,官方的推荐方法,是若需要针对C盘或者Root这类系统数据进行备份,请使用AMI。
AMI底层的实现其实也依赖snapshot的机制。只是AMI做了进一步的抽象和智能化,以便作为一个更加高效特殊的服务提供给客户:例如,可以customize自己的AMI,然后在启动EC2时,指定对应的AMI作为root或者C盘的数据来源。所以,一个好的practice,就是将操作系统文件和部分关键软件(如apache,mysql)和对应的配置的文件放置在根目录,做成AMI。这部分的数据有一个特点,就是不会经常变动。这样依此新启动的实例在一开始就是相当于是安装好了所有的软件并且配置好。省却了很多工作。至于其他的经常读写变动的数据,则放置在其他EBS做snapshot备份即可。新启动实例时,直接mount就好。
一般而言,snapshot比AMI更加快速,并且更加节省空间(Depending on the size of the volumes, it can take several minutes for the AMI-creation process to complete (sometimes up to 24 hours).You may find it more efficient to create snapshots of your volumes prior to creating your AMI. This way, only small, incremental snapshots need to be created when the AMI is created, and the process completes more quickly (the total time for snapshot creation remains the same))
但是snapshot和AMI都会面临一个问题,就是数据一致性和完整性(Integrity & consistency)。在不关机的情况下做备份,会出现一定的问题:
对于snapshot,文档中这样描述[3]:However, snapshots only capture data that has been written to your Amazon EBS volume at the time the snapshot command is issued. This might exclude any data that has been cached by any applications or the operating system.
对于AMI,文档中这样描述[1]:If you choose No reboot, we can't guarantee the file system integrity of the created image.
如果网站访问压力不大,则可以在夜间完成关机备份。或者,如果可以接受数据的暂时损失,不关机备份也是OK的。如果不能接受关机备份,也可以采用多机部署,在夜间流量不大的情况下,分批次对主机进行备份,各个主机轮换对外提供服务。
前面说到,snapshot用于root备份会有一些问题。但不代表snapshot就不能备份root。我们最终的目的,就是备份旧的EC2数据,并且成功还原到新的EC2上。为此,一般有以下三种方式进行备份和还原:
1)EC2-->AMI-->launch new EC2
2)old EBS-->snapshot-->AMI-->launch new EC2
3)EBS-->snapshot-->EBS-->mount to new EC2-->start new EC2
第一种方案是比较稳妥的方案,直接对EC2做AMI。无论linux还是windows,收费还是免费,都可以使用。但是AMI更像是做稳定的系统盘,而不是频繁的备份。过程可参阅[1]。
第二种方案是先对root盘做snapshot,然后再从snapshot中创建AMI,可参阅[2]。这种方法有个弊端:
Some Linux distributions, such as Red Hat Enterprise Linux (RHEL) and SUSE Linux Enterprise Server (SLES), use the EC2 billingProduct
code associated with an AMI to verify subscription status for package updates. Creating an AMI from an EBS snapshot does not maintain this billing code, and subsequent instances launched from such an AMI will not be able to connect to package update infrastructure.
Similarly, although you can create a Windows AMI from a snapshot, you can't successfully launch an instance from the AMI.
对于收费的windows和linux,没有用。
第三种方案,没有出现在官方文档中,算是一种黑科技[4]:
- Create an EBS volume "X" from the snapshot that has your good system on it.
- Run a new instance "A" of the base AMI. This creates a volume "Y" as the main disk of that instance.
- Stop instance "A".
- Detach volume "Y" from stopped instance "A".
- Attach the good volume "X" to stopped instance "A".
- Start instance "A".
经过尝试,亲测有效。但是不知在其他地方是否藏有隐藏BUG……个人以为,关键在于EC2实例类型和EBS中的OS类型必须匹配,不要把一个linux root ebs挂载到windows实例上。
此外,也有网友总结了三种常用的备份windows实例的方法,参见[5]。思路和我们上面说的高度相似。除了里面有一条说到将root备份和数据备份分开进行。最后,对snapshot和AMI区别有疑惑的,可以参考文章[6][7]。
完~
Reference
1] http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/Creating_EBSbacked_WinAMI.html
2] http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-launch-snapshot.html
3] http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html
4] https://forums.aws.amazon.com/thread.jspa?messageID=165839
5] http://www.n2ws.com/blog/3-ways-ec2-windows-backup-and-recovery.html
6] http://serverfault.com/questions/268719/amazon-ec2-terminology-ami-vs-ebs-vs-snapshot-vs-volume
7] http://stackoverflow.com/questions/17619580/aws-difference-between-a-snapshot-and-ami
关于AWS的备份策略的更多相关文章
- DG环境数据库RMAN备份策略制定
DG环境数据库RMAN备份策略制定: 主库(Primary) 全库备份 归档备份 删除历史文件夹 备库(Standby) 删除归档 引用说明 主库(Primary) $ crontab -l 0 1 ...
- 记录一则RMAN备份策略修正案例
背景:在给某客户处理问题时,发现客户数据库的备份空间即将用尽,进一步查看发现是用户数据库的当前RMAN备份策略存在潜在问题,需要修改备份策略. 环境:SunOS 5.10 + Oracle 11.2. ...
- Oracle备份及备份策略
第二章. 了解备份的重要性 可以说,从计算机系统出世的那天起,就有了备份这个概念,计算机以其强大的速度处理能力,取代了很多人为的工作,但是,往往很多时候,它又是那么弱不禁风,主板上的芯片.主板电路.内 ...
- Oracle RMAN备份策略
建立增量备份:如果数据库运行于不归档模式下,只能在数据库干净关闭的情况下 ( 以 normal .immediate . transactional 方式关闭 ) 才能进行一致性的增量备份,如果数据库 ...
- SVN服务器几种备份策略---重点svnsync备份---OK
配置管理的一个重要使命是保证数据的安全性,防止服务器应硬盘损坏.误操作造成数据无法恢复的灾难性后果.因此制定一个完整的备份策略非常重要. 一般来说,备份策略应规定如下几部分内容:备份频度.备份方式.备 ...
- MYSQL自动备份策略的选择
目前流行几种备份方式: 1.逻辑备份:使用mysql自带的mysqldump工具进行备份.备份成sql文件形式.优点:最大好处是能够与正在运行的mysql自动协同工作,在运行期间可以确保备份是当时的点 ...
- Linux备份策略(第二版)
备份策略 备份思想 一.系统潜在的威胁 Ø 系统硬件故障 Ø 软件故障 Ø 电源故障 Ø 用户的误操作 Ø 人为破坏 Ø 缓存中的内容没有及时的写入磁盘 Ø 自然灾害 二.备份介质的选择 备份介质:硬 ...
- 基于Linux下catalog方式的 Oracle 备份策略(RMAN)
--********************************** -- 基于Linux下 Oracle 备份策略(RMAN) --******************************* ...
- 转载:MySQL:亲测备份策略实例(线上真实备份案例)
是否为线上库的备份而烦恼过,这里提供一个完整的备份从属数据库的备份方案,亲测可用 说明: 备份从库,按周计,每周进行一次全备 每周一的早上六点进行全备,其他时间备份中继日志 在从库上启用rsync服务 ...
随机推荐
- PHP+MySQL中字符集问题分析
Character set顾名思义,就是字符.以及字符对应的编码的集合.例如简体中文字符集gb2312就包括简体中文中的所有规定汉字,以及每个汉字对应的代码. Collation,是指比较字符的规则的 ...
- PAT甲级1033. To Fill or Not to Fill
PAT甲级1033. To Fill or Not to Fill 题意: 有了高速公路,从杭州到任何其他城市开车很容易.但由于一辆汽车的坦克容量有限,我们不得不在不时地找到加油站.不同的加油站可能会 ...
- kali 执行apt-get upgrade后,终端无法打开的解决办法
今天在kali执行apt-get upgrade命令后,reboot启动,发现进入界面终端无法开启 一波百度,google发现大概应该是语言的配置问题,因为最开始安装kali的时候是选择中文,可能up ...
- Visual Studio 2015创建Shared Project时出错
今天使用Visual Studio 2015创建共享项目的时候发现如下错误: 网上搜了一下,发现了同样有人问这个问题的问题:Why can't I create Shared Project in V ...
- Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染
Qt移动应用开发(八):实现跨平台的QML和OpenGL混合渲染 上一篇文章讲到了利用C++这个桥梁,我们实现了QML和Java的交互.Qt 5大力推崇的QML/JS开发,让轻量.高速开发的QML/J ...
- ZigBee和Z-Wave的区别与未来
http://tech.c114.net/164/a702667.html ZigBee和Z-Wave短距离无线技术都用于远程监控和控制,但两种技术的规格和应用却不同.在美国应用越来越广泛的家庭局域网 ...
- TI 28335和AD采集
使用TI 28335和片外AD7606,一个AD有8个通道可以采集,激活AD采集: #define EXTADLZ0 *(int *)0x4200 // Zone 0, ADC data, ADCH1 ...
- 经典笛卡尔积SQL
经典笛卡尔积SQL: 下面的SQL会造成笛卡尔积: insert into tydic.temp_0731 select a.user_id,a.province_code,b.attr_code f ...
- Integrate SharePoint 2013 with Team Foundation Server 2012
Now that SharePoint 2013 is out I want to make sure that I can integrate SharePoint 2013 with Team F ...
- VS2017安装后如何移动 Windows Kits文件夹
MS的回答 LINK Try the following technique: Close all programs, move the “Windows Kits” folder to anothe ...