LNMP是最亲民的网页服务架构,整合了优秀的开源软件,想必大家再熟悉不过了,随着云计算的落地;大众创业,万众创新的倡导,为了更好的服务和安全,LNMP也迁入了云平台,比如像UCloud这样优秀的PAAS平台。而随之而来的问题是,创业公司如何保证自己的数据在云平台上的数据安全,难道还像以前一样,自己写备份脚本,自己做备份轮转吗?其实云带来的好处就是便利,轻松。我们不再需要以传统运维的方式来做备份。

  如果大家还不了解UCloud,请移步知乎:云计算到底哪家强?


UdataArk(数据方舟)能给我们带来哪些惊喜

  下面我以我的一次备份经历,来讲述一下用UdataArk(数据方舟)在UCloud平台做备份的有益之处。数据方舟是UCloud平台上的一款智能备份工具,它支持自动备份和手动备份两个大类。当然在这两大类细分下它还有非常大的一个亮点——体贴的秒级备份,真可谓备份都在为我们争分夺秒,彻底秒杀传统备份。后续我们会用到。关于备份细微的差别大家可以参阅: 官方详细文档


平民架构的春天——UCloud数据方舟实战记_第1张图片


常见备份的场景:

  我们来想一下,像我们的LNMP架构,一般在什么样的场景下需要备份。

1.搭建的系统环境,比如我安装的LNMP软件集,并且做了配置和优化,这样在架构出了问题,我们可以第一时间回滚到正常的时间点。一般情况下,备份两三个时间点就足够用了,无需太多。

2.网页内容和数据库,网页和数据库数据每天都在增加,这些都是需要增量备份。

3.并且我们希望在网站出问题时,能够快速恢复。

  UCloud的数据方舟就很贴近我们的需求,无论是自动备份还是手动备份,无论是全备,还是增量备,数据方舟都已经很好的支持。


数据盘和系统盘如何规划(个人意见,非官方)

  接下来,我们来聊聊在UCloud上使用数据方舟,我们对我们的LNMP要做哪些规划?

我们在登录Uhost(云主机)时,使用df -h 我们可以看到vda盘挂载在根分区上,我们的vdb盘挂载在/data上,这就能很好的理解,vda是我们的系统盘,vdb是我们的数据盘。我们在规划LNMP时,最好把LNMP软件装到vda中,即在根里;而像mysql的data目录,nginx的网页内容,指向vdb,即根下挂载的data目录。

平民架构的春天——UCloud数据方舟实战记_第2张图片

  这里我们主要探讨一下如何更改mysql和nginx的配置文件,来把数据存放到数据盘下,来保证合理规划备份。

  我们在data目录下新建mysqldata,webdata两个目录用来存放mysql和网页数据。

[root@pangu data]# ls

lost+found  mysqldata  webdata


1.Mysql数据指向数据盘:

my.cnf里做如下配置

vim /etc/my.cnf

[mysqld]

datadir  =/data/mysqldata

 

2.网页内容数据指向数据盘

nginx.conf里做如下配置

vim /etc/nginx.conf

平民架构的春天——UCloud数据方舟实战记_第3张图片


开始尝试备份

  首先我们对系统盘做秒级自动备份,对数据盘做手动备份。两大类备份方式都来体验一番。


  1. 系统盘(vda)---->存放centos系统和LNMP------------>秒级自动备份(全部由系统自动精准完成,无需人工参与


  2. 数据盘 (vdb) ---->存放mysql的data目录和web内容---->手动备份


  3. 无论是系统盘,还是数据盘,都是同时支持自动备份,手动备份的。这里我们只是为了避免文字冗余,系统盘选择了秒级自动备份说明,数据盘选择了手动备份说明。


故障恢复的点点滴滴

  一、模拟系统故障:我们模拟系统崩溃,或者数据被误删,来测一下恢复的结果和恢复时间。(注意:以下命令请勿在生产环境中使用)

[root@pangu ~]#rm -rf / --no-preserve-root

好吧,现在连ls,poweroff的命令都找不到了。

[root@pangu ~]# ls

-bash: /bin/ls: No such file or directory

[root@pangu ~]# poweroff

-bash: poweroff: command not found

   开始恢复,好吧,从UCloud的web页面控制台把故障云主机进行“断电”操作,开始恢复。(注意:只有删除根分区,找不见关机命令的机器在恢复时才需要断电,其他情况恢复,只需要“关机”操作就行

平民架构的春天——UCloud数据方舟实战记_第4张图片  

  系统恢复时间大概360秒,这里需要注意的是恢复后Uhost默认是关机状态,启动就可以了。看,在系统被破坏前1秒的mysql还在运行,注意了,我之前没有备份过mysql这个程序,这都是秒级备份自动完成的。是不是很神奇?这就是秒级备份连续数据保护的强大之处。我们每一秒的数据写入,都会被数据方舟锁备份下,有效避免传统备份的不及时。并且这不是以牺牲磁盘IO性能为代价,这也是数据方舟创新的亮点。


[root@10-10-147-43 ~]# lsof -i:3306

COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

mysqld  1585 mysql    3u  IPv4   9624      0t0  TCP *:mysql (LISTEN)


  二、模拟数据盘内容丢失

 其实,上文的删根操作,data目录依托于系统,也会被干掉,也是一样的,恢复之前,需要关机。这次恢复我们选择之前手动备份创建的还原点,来看看手动备份的效果如何。

平民架构的春天——UCloud数据方舟实战记_第5张图片


   这次更快,加开机才180秒。我们依然看到data目录(vdb)很完整。

平民架构的春天——UCloud数据方舟实战记_第6张图片

平民架构的春天——UCloud数据方舟实战记_第7张图片

  OK,数据恢复,http状态码返回200,网页访问正常。


平民架构的春天——UCloud数据方舟实战记_第8张图片

   我们从web控制台登录,用firefox来浏览一下网页,看来,我确实不是在骗人。

平民架构的春天——UCloud数据方舟实战记_第9张图片

 恢复的日志怎么查看

选中你的Uhost,移动到备份,看到了吧,恢复成功的日志就在这,直观明了,给人一种舒服的安全感. 

平民架构的春天——UCloud数据方舟实战记_第10张图片

   实测表明:数据方舟提供连续数据保护的服务;支持在线实时备份、具有精确到秒级的数据恢复能力;在线实时备份,无需暂停业务,数据方舟在备份时无需暂停业务或停止磁盘读写,不影响线上业务,不损耗磁盘I/O性能。与传统的备份耗时太长,备份需要mysql锁表,备份需要验证是否成功,备份产生太多的读写操作会降低磁盘性能,降低用户体验相比较,具有明显的时间成本优势,安全保障和良好的用户体验。


  最后我想以我的桌面背景向我们伟大的云计算厂商UCloud致敬!也向UdataArk(数据方舟)研发的辛勤的小松鼠们致敬!