生产数据不备份,用时两行泪

这篇具有很好参考价值的文章主要介绍了生产数据不备份,用时两行泪。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:项目使用pg一主一从,因慢sql导致查询慢,所以想从原本的4核加到16核,联系好运维后,打算先从从库开始操作,机器上的pgsql都正常关闭,然后停止,关机,扩容一切都很顺利,启动后pg正常启动,不好事情就开始要发生了

1、停止后看app发现已经开始报错了,然后查原因,发现pgsql开启了一主一从,synchronous_commit默认参数是on,表示使用同步提交,即事务提交后等待至少一个副本写入磁盘后才返回成功。而从库因停止导致主库一直等从库响应引发的问题,然后马上把从库启起来。

2、接着发现注册中心nacos连的mysql也在这台从库上,mysql没有正常关闭,然后又因为mysql也是主从同时开启了binlog,导致非正常关闭,把mysqld.pid文件丢失了,就改my.cnf的配置,改目录然后重启。mysql好了。折腾了有一会。到这里以为一切顺利的时候开始准备操作主库。

3、主库也是一样的操作,然后同时把postgresql.conf中的synchronous_commit修改后,synchronous_commit有以下几个选项,本次直接改的是local

off:表示不使用同步提交,即事务提交后不会等待任何副本写入磁盘。这是默认值。
on:表示使用同步提交,即事务提交后等待至少一个副本写入磁盘后才返回成功。
remote_write:表示使用同步提交,但只等待至少一个远程副本写入磁盘后才返回成功。如果没有远程副本,则等待本地副本写入磁盘。
remote_apply:表示使用同步提交,等待至少一个远程副本应用日志后才返回成功。如果没有远程副本,则等待本地副本应用日志。
local:选项不需要等待远程副本写入磁盘或应用日志。这使得它比其他同步提交选项更快,但也更容易丢失数据,因为只有本地副本写入磁盘后才返回成功。因此,local选项适合于对数据丢失有一定容忍度的应用程序

以为到这里就没啥问题,
4、开始正常起服务,起着突然发现报错了,我们服务有授权,这个时候只有一个节点,但提示已经慢了,心想不可能啊,一看配置,怎么读的是测试环境的授权。然后改成了生产的就继续起。
5、接着起发现少字段,心里想,不对啊,这项目已经跑了2-3年了,怎么可能会有这种问题呢,然后就开始看代码,加一个字段,
6、接着又继续起,还是报错,突然感觉不妙,看了一些数据表,全部没了,这时犹如晴天霹雳,所有人心里开始慌了,想着没有操作什么啊,难道运维干了其它事情?然后联系运维,问有没有做额外的操作,运维说:“没有”,,又问是不是有磁盘没有挂载,运维说:“这个不清楚”,然后就挂了电话。听到运维这样说,我和同事都已经双脚开始颤抖了,数据库又没有备份,难道职业生涯就要到此结束了吗?还是生产数据,跑了2-3年,此时app也已经停了4-5个小时了。(提醒,生产数据库一定要做备份)
这个时候同事说,之前遇到过机器重启后,linux自动重置系统,把在做的人全部吓了一跳,如果这样的话就完了。
解决方案即将迎来反转:
我们回想一下整个的操作,重复上述的操作的描述后。提议开始分2步走,
1、继续排查原因,看看什么原因,数据能不能恢复。
2、做最坏的打算,周末两天连续扛,因为我们的数据都是通过Kafka发送的,可以修改offset从头消费。还有一些其它配置拉各个系统对齐。
提议完成后,给领导先汇报了一下这个情况,然后说了我们的解决方案,就开始干起来。

我去到pg的数据目录一看,时间是系统重启的时间,我想不对劲啊,人为是不可能这样的呀,就通过history查看机器历史执行命令。机器就1000行左右的历史,一直翻翻翻,
翻到200行的时候,一个mount命令映入眼前。“卧槽,历史有手动挂载过磁盘”,我一声大喊,这个时候边上的同事都飞奔过来,
边上的同事说到看一下/etc/fstab (图片为测试环境)生产数据不备份,用时两行泪,踩坑一下午,java,linux,postgresql,mysql,运维,服务器
文件是不是没有自动把磁盘挂载回去,一看果然是,然后lsblk(图片为测试环境)
生产数据不备份,用时两行泪,踩坑一下午,java,linux,postgresql,mysql,运维,服务器
查看系统挂载的磁盘。这个时候全部开始骂娘,这运维初始化机器的时候怎么回事,有磁盘挂载还不重启的时候自动挂载回去。
大家也就松了一口气,然后准备开始操作恢复
1、原本起的服务,mysql、pg停了。
2、先起pg看数据能不能正常恢复。
3、在恢复mysql。
4、恢复系统。
当执行完挂载命令后,pg重启数据回来了,悬着的心就放下来了。接着把之前mysql的my.cnf还原(操作重要文件时都先备份!!!)在恢复。所有的数据都回来了。
叹了一口气,就慢慢恢复系统,同时在/etc/fstab
增加了系统重启自动挂载磁盘的配置,最后在给领导同步了一下情况。至此凌晨2点收工回家。
总结一句话:“生产数据不备份,用时两行泪!!文章来源地址https://www.toymoban.com/news/detail-812625.html

到了这里,关于生产数据不备份,用时两行泪的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flask结合gunicorn和nginx反向代理的生产环境部署及踩坑记录

    个人博客:https://xzajyjs.cn 之前自己写的flask使用gunicorn上线生产环境没有什么问题,但是最近搭建了一个现成的flask项目,当使用python直接运行时不会有问题,而使用gunicorn时则会出现一些问题。 这里使用pyenv创建了一个虚拟环境,并安装好依赖 下面是入口函数 run.py : 其中

    2024年02月16日
    浏览(49)
  • T1级,生产环境事故—Shell脚本一键备份K8s的YAML文件

    大家好,我叫 秋意零 。 最近对公司进行日常运维工作时,出现了一个 T1 级别事故 。导致公司的“酒云网”APP的无法使用。我和我领导一起搞了一个多小时, 业务也停了一个多小时 。 起因是:我的部门直系领导,叫我**删除一个 Deployemnt 资源(node-api-gateway)**说该资源不用

    2024年04月27日
    浏览(42)
  • 在Microsoft Excel中如何快速将上下两行数据合并为一行?

    合并单元格是电子表格初学者最常用的选项之一。当一组单元格、行或列需要标题或标签时,合并单元格是一种常用的技术。 合并单元格时,仅保留区域左上角单元格中的值或公式,并将其显示在合并后的单元格中。将丢弃任何其他值或公式,那么如何在新的空白单元格中将

    2024年02月16日
    浏览(40)
  • Stata导入csv时报错Note: Unmatched quote while processing row,错误识别为两行数据

    问题:Stata导入csv时报错Note: Unmatched quote while processing row,错误识别为两行数据 使用命令,向Stata中导入csv文件: 出现很多条目有上述报错,全文类似于: 看内存里的数据,发现这几条的内容分别被识别到第一个单元格里,其他列都是缺失值,而且它下面还有一整行缺失值

    2024年02月04日
    浏览(35)
  • 历年系统架构师下午真题详解

    试题一 是必答题 阅读以下关于软件架构设计与评估的叙述,在答题纸上回答问题1和问题2。 【说明】 某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的

    2024年02月04日
    浏览(63)
  • 提示“event”已弃用时解决办法

    问题 我试图使用 event.preventDefault() 方法,但不断收到错误。它说 event 已经被弃用了。 原因: 一个单独的问题是为什么会收到“弃用”警告,原因: https://developer.mozilla.org/en-US/docs/Web/API/Window/event 只读 Window 属性事件返回当前由站点代码处理的事件, 在事件处理程序的上下文

    2024年02月12日
    浏览(33)
  • 软件设计师_算法——下午题(第四题)

    解析:分析题干:queen[i]表示第i个皇后的位置,表示 第i个皇后放置在第i行的第queen[i]列 ; (1): queen[i]==queen[j] ;这里的需求是检查已摆放的皇后是否在同一列或者是同一斜线上,||后面的abs(queen[i]-queen[j]==(j-i))查看已摆放的皇后是否在同一斜线上,代码的意思是,第i个皇

    2024年02月08日
    浏览(54)
  • CAcUiDockControlBar初始位置 2023/8/19 下午3:51:18

    2023/8/19 下午3:51:18 CAcUiDockControlBar初始位置 2023/8/19 下午3:52:00 CAcUiDockControlBar的初始位置是根据其在程序代码中的设置而确定的。通常情况下,它的初始位置可以通过以下几种方式进行设置: 使用Create函数:在创建CAcUiDockControlBar对象时,可以调用Create函数来设置初始位置。通

    2024年02月07日
    浏览(31)
  • 微信小程序按需注入和用时注入

    官网链接 按需注入 注意事项 启用按需注入后,小程序仅注入当前访问页面所需的自定义组件和页面代码。未访问的页面、当前页面未声明的自定义组件不会被加载和初始化,对应代码文件将不被执行。请开发者修改配置后务必确认小程序的表现正常。 启用按需注入后,页面

    2024年02月20日
    浏览(38)
  • 软件设计师_软考中级_下午题笔记(已过)

    数据流图分为顶层数据流图和0层数据流图 顶层数据流图只有一个处理节点即某某系统,顶层数据流图是系统和实体的数据传输表示 0层数据流图是将系统细化 一、数据流图的组成 外部实体(起点,终点) 数据流 处理 数据存储 二、数据流图相关原则 1、顶层图和0层图平衡原则

    2024年02月05日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包