• 站务
  • [11.26] 网站迁移时发生了意外的数据丢失

2023-11-30 update:
目前已将绝大部分话题数据找回,具体见 0x0001
特别鸣谢 @Miigon 的支援!

向大家道个歉,这周末计划给网站提速,但在昨晚在尝试迁移网站的主体和数据库从日本到香港地域时,发生意外,想通过快照恢复,恰好遇上 Fly.io 的每日数据快照 出现问题,数据暂无法找回 🥲

最近的一个备份在 23年9月1日的 19:14 分,所以先回了一个档。

影响时间:9月1日 - 11月26日早晨

具体范围:

  1. discussion_id 为 1610 - 1669 的 discussion
  2. post_id 在 9385 以后的帖子,以及中途编辑过的部分
  3. 9.1 之后新注册的用户,及所有的记录

当前的补救措施:

  1. 还原 9.1 的备份,数据库 / Redis 单独抽到一个 vps 去运行(目前走的阿里云香港轻量),后续补充自动化备份方案
  2. 设置新话题 id 的起始量 ALTER TABLE discussions AUTO_INCREMENT=1670;
  3. 尽力找服务商看能否要回对应数据,单独作展示
  4. 考虑搜集一下对应 discussion 被搜索引擎收录的 cache 链接

一些教训:

  1. 意识:数据安全方面得非常重视,DBA 和开发的关注视角会很不一样;
  2. 备份:涉及 DB 的操作一定要提前备份一次,不能大意;还需单独考虑异地容灾方案;自动化备份 / 手动的定时检查也很重要;
  3. 选型:fly.io 本身更侧重边缘计算方面,技术相对要激进,对数据而言更重要的是稳和安全,不太适合放在它们跟随 machine 绑定的 volume 上。

太痛了!

    也如 hacker news 一个前辈 说到的

    Database is a thing I never want to deal with at such low level. Such approach will be brittle, very brittle. Managed data storage with SLA guarantees is not easy and there are quite a few companies specializing on that for a reason.
    As a proof, check out fly.io forums. They are full with posts about suddenly broken Postgres instances.

    站长辛苦了,有些内容被cache下来就是万幸
    每一次故障的产生直至恢复都是学习的好机会)

    0x0001 置顶此帖

    0x0001 后续补充自动化备份方案

    目前已安排上,每天自动 dump 并存档,另外会再尝试一些更好的架构、方案等等,数据安全放在第一位 👀

    数据确实是最重要的,多备份吧,可以考虑组个 nas 之类的,进行异地多活备份🙂

      2023-11-29:通过从搜索引擎缓存版本的网页中,提取元数据逆向构造数据库原始数据,以及将已经渲染的 HTML 转换为原始 XML 富文本格式,在丢失的贴子中拯救回来了 19 个贴子。

      分别如下(站内链接):
      1615: 随机动物生成网站
      1627: 谁是我的基类?
      1628: 爱丁堡大学信息学院资源分享(不定时持续更新)
      1635: 一键分析大型 React 应用组件依赖关系的 VSCode 插件
      1638: SageMath 10.1 安装记录
      1639: 置换群群元的开平方:以BRICS+的sqrt为例
      1640: 结式、伴随矩阵、特征多项式和2023江苏省数据安全竞赛的hardrsa
      1641: 格攻击之小未知数方程求解入门——原理与例子
      1642: CodeSmellGPT: 基于GPT的代码自动Review工具(VSCode Extension)
      1643: 从 ADHD 注意力缺失症聊开去
      1644: 《上海交通大学生存手册》节选
      1651: 专业选择求助
      1654: 分享一个讲ChatGPT的视频,连我这种AI小白都能看懂
      1660: 测开迷茫求助
      1661: Web App: 从 HTML 到 Jamstack
      1662: HSBC Digital Innovation Graduate Programme 2024 (汇丰科技2024年校招)
      1663: 理解与 Debug 层叠上下文(Stacking Contexts)
      1665: 【技术分享】Go 语言开源 Excel 文档基础库
      1669: 主站接入了 WebAuthn Passkey 免密码登录

      恢复出来的贴子以及回复的编辑历史消失,然而“已编辑”的标识依然能看到。
      discussion_id 保持不变,post_id 整体偏移 +1000 以避免冲突。

      丢失了许多账号(至少114个,其中大多数应该是spam),其中四个用户曾经有发帖/回帖操作,故创建同 userid 账号占位防止未来 ID 冲突,同时作为纪念:
      @ghost_zzzyyy, @ghost_daiguamm, @ghost_fire_black , @ghost_xuri

      ps. 因为内容是从已渲染 HTML 逆向转换得到的,兼容性可能不是非常好,请尽可能不要编辑这段ID号(/d/1615/d/1669)之内的帖子以及编辑这些帖子下面的回复。

        @Miigon 成功从搜索引擎索引中抢救回来 19 个论坛主题,并构造 discussion / posts 的 sql,目前我已将其补充到了生产数据库,特此鸣谢!!

        目前已最大限度地恢复数据,但由于我们缺少在此期间新注册用户的信息,所以发帖的对应 uid 补充了 ghost_ 的前缀,目前影响 4 名已发帖用户: @ghost_zzzyyy , @ghost_fire_black , @ghost_daiguamm , @ghost_xuri 这些用户需要重新注册。

        从帖子视角看影响面还好,通过9月1日 - 11月26日的发帖 log,统计到非 spam 的有效帖子一共有 20 条,19 条已通过上述方式恢复,唯一一个没找回的是 @Tover2023D^3CTF的d3bdd,不过博客有原文。

        表格原始数据在 这里

        切记:
        备份!备份!再备份!

          6 天 后

          2023年还有数据丢失嘛...完全不做备份吗?

            293 不惊讶,原因楼上有提到,非完全不做备份。

            4 天 后
            0x0001 取消置顶

            © 2018-2025 0xFFFF