云上自建数据库,秒级备份,看这篇就对了!

帅比萌擦擦* 提交于 2020-11-26 17:50:49

导读:数据是企业重要资产,作为存储数据的介质,IT设施发生问题是不可避免。因此,每一个企业都应该做好数据备份,保证数据的安全与业务的可用。

本次分享将重点介绍如何利用阿里云快照极速可用特性和一致性快照组,便捷地完成云上自建数据库的数据备份。

 

作者 | 阿里云技术专家 余初武

来源 | 弹性计算百晓生

 

极速可用特性——秒级,非一致性数据备份


阿里云ECS的极速可用特性主要包括四个方面,分别是快照秒级可用、云盘回滚性能0损失、ESSD增值特性以及全地域支持等。阿里云ECS极速可用特性的典型使用场景包括快速搭建研发测试环境;业务关键配置的变更保护,实现秒级备份相关磁盘数据;云盘极速回滚,并实现回滚的磁盘性能无损耗。


基于极速可用的特性,用户仅需要几秒钟的时间就可以复制出一个新磁盘。


这一过程也非常简单,首先创建一个带极速可用特性的快照,关键参数的设置如下图所示,主要包括InstantAccess和InstantAccessRetentionDays,前者设置为True就可以设置成为极速可用的快照,后者则是极速可用特性的保留天数,可以让这特性到期之后就会自动被关闭。当快照创建完成(极速可用特性开启的情况下,不需要等快照进度完成)之后,就能够快速创建磁盘并立即挂载使用。

 

  案例:自建数据库,磁盘空间不够,怎么办?

在这样的情况下,最直接能想到的解决方案是纯人工方式。

  • 首先,对于需要扩容的磁盘打好一个普通快照,这个过程一般都比较慢,往往需要几分钟、几小时以及几天不等的时间
  • 其次,需要人工登录到控制台对磁盘进行在线扩容。
  • 再次,要登录到实例内部找到相应的磁盘进行扩展分区以及文件系统等各种命令的操作,而这些命令往往是非常复杂的,也是非常容易出错的。

这一方案的缺点十分明显,那就是耗时很久,平均需要1到2小时,而且很容易出错。


而目前阿里云推荐的最佳解决方案是将上述过程全部通过编码实现自动化,做成OOS(运维编排,Operation Orchestration Service)的模板,通过OOS模块实现一键扩容,完成上述方案的全部过程。

 

这种方案的使用方式就非常简单了,用户可以直接进入到OOS控制台,找到相应的模板并创建一个相应的执行即可,整个过程只需要几十秒就可以完成,而且可以进一步优化至十几秒。

 


  OOS一键扩容关键技术讲解

接下来对于刚才提到的OOS一键扩容的关键技术内幕进行讲解。


其实在该方案背后主要包括三个关键技术:分别是快照的极速可用特性、通过云助手执行扩展分区的命令以及磁盘的序列号。

 

这里值得注意的是通过云助手执行扩展分区命令时,我们无法知道具体扩展的是哪一块磁盘,因此才需要磁盘的序列号。


磁盘序列号这一特性目前在公有云ECS上也已经上线了,用户通过DescribeDisks就可以返回磁盘序列号SerialNumber,之后通过云助手将磁盘序列号传递给GuestOS内部的脚本,而GuestOS内部的脚本则可以通过udevadm info这串命令获取任意一块磁盘已挂载设备的序列号,这个序列号与DescribeDisks返回的序列号是完全一致的,而且从磁盘诞生之后,序列号就不会再发生任何改变,因此可以作为磁盘在GuestOS内部的唯一标识,并且与OpenABI的接口实现唯一关联。


这样才能帮助我们准确无误地找到需要扩展的磁盘去执行相应的命令。同时,因为ECS具有快照极速可用特性,秒级地打出了一个数据备份,一旦发生任何意外,还可以通过快照实现秒级回滚,基本可以做到万无一失地实现自动扩容过程。

 

 

一致性快照组——崩溃一致性数据备份

 

介绍完快照极速可用特性,我们继续跟大家分享下一致性快照组。

 

一致性快照组的主要特点主要包括四点:即多云盘IO写入一致性、ESSD云盘增值特性、实例级别保护以及功能免费。

 

适用的场景主要有三种:

  • 企业上云的时候可以实现实例级别整机的保护和备份;
  • 自建数据库特别是跨多云盘自建数据的模式下,一定要使用一致性快照来备份;
  • SAP HANA的整机一致性保护,也需要用到一致性快照


  案例:使用多数据盘自建数据库

这里要介绍的案例是自建数据库时使用了多数据盘,这样的做法主要是为了将数据库常见的日志和数据拆分到独立的云盘上去,使得整个数据库的性能和稳定性都能够得到较大的提升,同时实现日志和数据的读写隔离。

在这种情况下,一旦需要拆分就会遇到两块磁盘上数据存在强关联关系的问题。熟悉数据库的同学都知道,任何一次写操作都会先进行日志操作,日志写完之后再去修改真正的数据,当数据写入完成之后再回来修改日志,比如像MySQL的Redo日志等。

 

可见,日志和数据存在强依赖逻辑关系,此时如果打普通快照,那么存在任何一点点时差都会导致写入数据在两块磁盘上存在不一致的问题,此时就必须要用到一致性快照,实现崩溃一致性的数据备份。

 

 

对于这样的案例场景,阿里云也提供了最佳实践,也就是使用ROS(资源编排,Resource Orchestration Service)。

 

该方案的基本过程就是将上述理念通过ROS实现模板化,通过ROS创建完全一样的数据库系统。方案关键点在于创建两块独立的数据盘,一块放数据,另外一块放日志,同时对于两块数据盘赋予系统的数据库快照策略Auto Snapshot Policy,并定期地对于两块盘进行数据备份,并且使用一致性快照进行备份,避免出现废弃数据的问题。

 

 

总结与思考


以上的案例都是基于自建数据库的,这两个案例的关键点在于多数据盘和自动扩容磁盘。


将上述两个案例进行串联才能够看到真实的使用场景,也就是先用ROS固化上述提到的最佳实践过程,也就是实现多数据盘,即日志盘和数据盘的隔离,并且使用自动快照的策略定期地打一致性快照。


与此同时,配上云监控就能够在磁盘空间不足的时候,及时报警,此时再通过OOS一键扩容实现磁盘的自动扩容。


当然,这个过程还可以更进一步优化,在OOS控制台配置相应的云监控项目,当收到监控项报警之后自动触发OOS运行和扩容的模板进行一键扩容,真正地实现自动扩容,也就是所谓“无人值守”。

 


对于本次介绍的新特性进行总结,本次主要介绍了极速可用和一致性快照两个新特性,这两个新特性很快就会上线供大家使用。


对于极速可用特性而言,建议结合OOS、云助手磁盘或者其他场景的自动运维实践。如果要对云盘进行操作或者自动化运维则需要使用磁盘序列号在GuestOS内部唯一地标识一块磁盘,这样才能做到准确无误。一致性快照则是在MySQL这种多盘场景下才会使用,主要用来实现奔溃一致性备份。

 

本次分享到此结束,感兴趣的同学可持续关注和学习云上环境数据保护最佳实践。


关注百晓生,笑谈云计算

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!