【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

站点恢复过程中的经验和教训

  • 2010-01-05
  • 本文字数:2720 字

    阅读完需:约 9 分钟

最近 Jeff Atwood 丢失了两个 blog 站点: Blog @ Stackoverflow Coding Horror 。他设法恢复了这两个站点的内容,但是从这个事件中我们应该得到什么教训呢?

在 Jeff 的博客上,他写了一篇为什么人们需要备份内容以及如何进行该项工作的文章,2008 年一月发布的,在其中他做出了以下结论:

可以肯定的是:只有在你拥有某种备份策略,并且坚持执行的时候,你才会了解它。如果备份数据看起来有点麻烦,那就对了,因为它的确是那样。打住!我知道怎么回事儿。听我的。不管怎样都要做。

Jeff 针对 Stackoverflow 以及 Codeing Horror 的博客都有备份策略,其中后者是由 CrystalTech 管理的,他们会经常备份整个站点。但是又怎么可能会丢失站点的内容呢?原因是由于站点是存放在虚拟机中的,而 CrystalTech 备份的是虚拟机的镜像,而镜像全都被破坏了。这样,虽然备份包含了大量被破坏了的虚拟机镜像,但是它们没什么用处,因为使用它们无法启动虚拟机。在文章的开始,Jeff 将责任归咎于他自己以及提供商:

Jeff Atwood :呃,CrystalTech 的服务器崩溃了。很显然他们通常所用的备份流程在备份虚拟机镜像的时候失败了,而没有给出提示。 Jeff Atwood :对此,我和站点提供商各负 50% 的责任(不要相信站点提供商,还是要做你自己的离线备份!)

在一些用户的帮助下,Jeff 设法恢复了他的站点中丢失的内容。Rich Skrenta 帮助他找回了文本:

幸亏有 blekko.com 的 Rich Skrenta,这样我才能几乎立即找到 Coding Horror 站点上的静态的 HTML 版本。他热心地提供了该站点上每个爬虫页面的结果。有些人有目标,而有些人有大胆的的目标。Rich 的目标尤其令人惊叹:在 Google 最擅长的搜索领域与其进行较量。这是为什么他能够恰好找到 Coding Horror 完全的文本存档的原因。Rich,我是否曾经告诉你,你是我的英雄?不管怎样,幸亏有了 Rich,你现在还能够浏览 Coding Horror 的静态 HTML 版本。令人惊奇的是,对于这个站点,静态的 HTML 版本和动态的版本没有很大的不同。我想这是作为极简主义者的好处吧。

而图片都来自于 Carmine Paolino,恰好一个用户拥有“这个站点几乎完全的镜像,这些数据都存放在他的 Mac 上!多亏他的镜像,我现在才能够几乎 100% 地恢复丢失的图片和内容。”在恢复了站点之后,Jeff 获得了重生,同时也停止了自责:

因为我是个笨蛋,我没有对 Coding Horror 做自己的(最新的)备份。天哪,我多希望曾经读过一些好的关于备份策略的博文啊

他做出如下结论:

从这些悲惨的事件中,我们能够得到什么教训呢? 1. 我吸取教训。
2. 是的,真的,我吸取教训。
3. 不要依赖于你的提供商或者任何其他人来备份你重要的数据。而应该自己来做。如果你不能够对你自己的备份负责,那么数据丢失就不会是偶然事件了
4. 如果你的数据真的出了问题,那么你怎么才能够恢复呢?过程是什么呢?恢复最困难的部分是什么呢?我想在我思想深处对 Coding Horror 的灾难恢复能力有错误的信心,因为我一直认为它大多数都是文本。当然,后来发现文本是其中最简单的部分。而我曾经认为是很好方式的镜像比我意识到的更加重要,而且更加难以恢复。有些人认为我们不应该讨论如何备份,而应该讨论如何恢复
5. 定期对你的恢复过程进行检查,以确认它仍然是可用的、有效的并且功能齐备,这是非常有价值的工作。
6. 我太伟大了!不,只是开玩笑。我还是要吸取教训。

Joel Spolsky 展示了多种其他可能的情况,其中如果没有提供恢复的话,那么备份策略就不起作用

  • 我们使用加密安全密钥对备份文件进行了加密,而密钥位于丢失数据的那台计算机上。
  • 服务器有大量存储在 IIS 的元数据库中的配置信息,而它们没有备份。
  • 备份文件被复制到 FAT 分区上,并且被截断为 2GB,而没有给出提示
  • 你的备份位于 LTO 驱动器上,它和数据中心一起丢失了,并且你无法在三天之内得到另一个 LTO 驱动器。
  • 还有其它成千上万种可能出现的错误,即便你拥有备份策略。

可靠服务的最小限度并非是你已经做了备份,而是你已经为恢复做了准备。如果你正在运行一个 Web 服务,那么你需要明白的是,你能对整个站点创建合理的最新副本,并且是在合理的时间之内,在一个新的服务器上或者过去没有访问过原来的数据中心上任何东西的服务器。底线是你已经做了对恢复的准备。

让我们不再询问人们他们是否做了备份,而要询问他们是否为恢复做了准备。

Jeff 转移了他的博客站点,以便于存放 Stackoverflow 的数据中心和其他在家中的服务器更加可靠,因为它们带有更好的备份策略

  1. 我们在早上四点、下午四点和晚上 12 点会对所有数据库做全备份。(某些数据库可能会更频繁,但这是通常的方式)这些数据库的全备份都存储在 PEAK 数据中心机架上的 NAS RAID-6 设备中。
  2. 我们有一个连接在数据库服务器上的 500GB 的 USB 硬盘。还有一段 C#的脚本,它会在每晚的凌晨一点左右将最新的备份从 NAS 复制到 USB 硬盘上。最旧的文件会被删除,从而为新的文件腾出所需要的空间。(当前的 Stack Overflow 的全备份压缩之后有 7GB 左右,而另一个数据库压缩后大概有 2GB)。新措施是:我们会在服务器上连接两个 USB 硬盘,从而并行地做验证复制,以免其中之一出现问题。
  3. Geoff Dalgas 是我们团队的一员,他住在离 PEAK 数据中心一英里的地方。他每过几周就会顺便到数据中心更换 USB 硬盘。他在家里放有四块 500 GB 的硬盘,还有两个在数据中心。他会不时地持续循环更换。
  4. 新措施:Fog Creek 每周都会使用 FTP 接入,然后将最新的数据库备份到他们的伺服设备上,在星期六流量低的时候进行。
  5. 我们每个月都会为所有站点(Stack Overflow、Server Fault、Super User)创建共享的数据块(dump)。这是数据的子集,但是是可以控制大小的,并且提供在 Legal Torrents 上。这些数据块被物理存储,并且由 Legal Torrents 提供种子。
  6. 我们的 Subversion 源代码控制库每天都会被复制到 NAS 上,并且被复制到外部的 USB 硬盘上等等,这都是通过相同的脚本完成的。
  7. 我们还运行了几个虚拟机镜像——大多数是为了提供 Linux 辅助服务——他们也是通过同样的过程备份的。因为我们的其他提供商吸取了困难的方式的教训,所以像虚拟机那样备份更有技巧性,而这肯定是你需要小心的事情。
  8. 我们有规律地下载最新的数据库备份并在本地恢复它们(我们总是针对真实数据进行开发),从而我们知道我们的备份是有效的。

这个策略听起来比在开始的时候设置更好一些。在这种情况下薄弱的环节在于“Geoff”。如果 Geoff 没有出现并更换驱动器怎么办?或者他丢掉了一块怎么办?或者小偷从他家里把硬盘偷走了怎么办?

Jeff Atwood 不是真的要责怪谁。这对任何人都有可能发生,即便拥有更好的备份策略。问题在于:我们在此能够得到什么样的教训?

查看英文原文: Validating a Backup Strategy with Restore

2010-01-05 00:353213
用户头像

发布了 340 篇内容, 共 125.7 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

Mac开发环境 React Native0.60 环境 安卓环境Java变量 及~/.zshrc文件配置

蛋蛋

React

猿灯塔:关于Java面试,你应该准备这些知识点

猿灯塔

面试

出海蓝军先锋联想来酷,今夏再征"丝路"

Geek_116789

程序员面试与 HR 谈薪资技巧

张小方

程序员 面试 offer 年终奖 月薪

时间管理的本质到底是什么?

非著名程序员

程序员 提升认知 时间管理

分布式计算DAG1-画猫

Hervor。

架构师训练营第 04周——总结

李伟

极客大学架构师训练营

架构师训练营 第4周作业

坂田吴奇隆

极客大学架构师训练营

架构师训练营-第4周总结

坂田吴奇隆

极客大学架构师训练营

消息队列(五)如何保证消息的顺序性?

奈何花开

Java MQ 消息队列

为什么大公司一定要使用DevOps?

张启华

数据库周刊30丨数据安全法草案将亮相;2020数据库产业报告;云南电网上线达梦;达梦7误删Redo Log;Oracle存储过程性能瓶颈;易鲸捷实践案例……

墨天轮

MySQL 数据库 oracle mongodb 周刊

架构师训练营第四周总结:互联网架构概要

hifly

高可用 高性能 极客大学架构师训练营 互联网架构

第四周作业

芒夏

极客大学架构师训练营

Python中进行None判断时,为什么用is而不是==

王坤祥

Python 编程 进阶 计算机基础

架构师训练营——第四周作业

jiangnanage

前端存储除了 localStorage 还有啥

阿宝哥

Java 大前端 存储

父亲节会员礼遇免费送,联想来酷重点发力"健康赛道"

Geek_116789

架构师训练营第四周作业

Bruce Xiong

架构师训练营第三周作业

陈靓-哲露

作业 - 第4周

Happy-Coming

JDBC拾遗

qihuajun

架构师训练营 - 系统架构

Pontus

极客大学架构师训练营

架构设计之常识篇

魔曦

架构师 极客大学架构师训练营

可读代码编写炸鸡四(上篇) - 来写注释

多选参数

代码质量 代码 代码注释

架构师训练营 - 作业 - 第四周

心在飞

极客大学架构师训练营

消息队列(六)如何处理消费者故障导致的百万消息积压?

奈何花开

Java MQ 消息队列

可读代码编写炸鸡三 - 审美

多选参数

代码质量 代码 代码注释

印度下黑手!59款中国APP被禁用,微信微博QQ抖音等在列

程序员生活志

自己动手编译一个HEIF图片转jpeg工具(Mac平台)

GeorgeMR

HEIF HEIC jpeg 图片

第四周总结

芒夏

极客大学架构师训练营

站点恢复过程中的经验和教训_架构_Abel Avram_InfoQ精选文章