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

背景:项目使用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 (图片为测试环境)在这里插入图片描述
文件是不是没有自动把磁盘挂载回去,一看果然是,然后lsblk(图片为测试环境)
在这里插入图片描述
查看系统挂载的磁盘。这个时候全部开始骂娘,这运维初始化机器的时候怎么回事,有磁盘挂载还不重启的时候自动挂载回去。
大家也就松了一口气,然后准备开始操作恢复
1、原本起的服务,mysql、pg停了。
2、先起pg看数据能不能正常恢复。
3、在恢复mysql。
4、恢复系统。
当执行完挂载命令后,pg重启数据回来了,悬着的心就放下来了。接着把之前mysql的my.cnf还原(操作重要文件时都先备份!!!)在恢复。所有的数据都回来了。
叹了一口气,就慢慢恢复系统,同时在/etc/fstab
增加了系统重启自动挂载磁盘的配置,最后在给领导同步了一下情况。至此凌晨2点收工回家。
总结一句话:“生产数据不备份,用时两行泪!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/316679.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

gpu显卡简介

一、目录 1.基本常用参数 2. nvidia 显卡基本了解(基本简介) 3. 显卡查看算力 4. 显卡算力、驱动版本(Driver Version)、CUDA Toolkit(CUDA Version)、PyTorch版本之间的关系 5. 显卡安装流程 6. NVIDIA显卡简介 二、实现 基本常…

使用ElementUI的el-tab+vxe-table表格+复选框选择

效果: 功能:首先进来是全部清空的状态的 点击左边选择不同项右边会实时发送接口获取数据填充表格 复选的内容可以保留显示,比如A的1勾选后切换到B再切换回来A的1仍然是勾选状态 说实话官网的setCheckboxRow方法我实现不了,这里…

【MySQL】导入导出SQL脚本及远程备份---超详细介绍

目录 前言: 一 navcat导入导出 1.1 导入 1.2 导出 二 mysqldump 导入导出 2.1 导入 2.2 导出 三 load data infile命令导入导出 3.1 导入 3.2 导出 四 远程备份 五 思维导图 前言: 随着当今企业发展,数据库的数据越来越多&…

Qt OpenGL - 网格式的直角坐标系

Qt OpenGL - 网格式的直角坐标系 引言一、绘制3D网格1.1 绘制平行于y轴的线段1.2 绘制平行于三个轴的线段1.3 绘制不同的3D网格 二、网格式的直角坐标系三、参考链接 引言 在OpenGL进行3D可视化,只绘制三条坐标轴略显单薄,而绘制网格形式的坐标系则能更清…

Flutter之运行错误:this and base files have different roots

运行时报错: this and base files have different roots: E:\Demolpro\waqu\build\flutter-plugin-_android_lifecycle and C:\Users\78535\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_pulgin_android_lifecycle-2.0.17\android 如图: 这种情况…

自制数据库空洞率清理工具-C版-03-EasyClean-V1.2(支持南大通用数据库Gbase8a)

目录 一、环境信息 二、简述 三、升级点 四、支持功能 五、空洞率 六、工具流程图 1、流程描述 2、注意点 (1)方法一 (2)方法二 七、清理空洞率流程图 八、安装包下载地址 九、参数介绍 1、命令模板 2、命令样例 3…

Pytest测试 —— 如何使用属性来标记测试函数!

在软件开发领域,单元测试是确保代码质量和可维护性的关键一环。随着项目的不断发展,测试用例的管理变得愈发复杂,而一些测试可能需要特殊的处理、环境或者标记。在Python中,我们可以通过使用属性(Attribute&#xff09…

Leetcode202快乐数(java实现)

今天分享的题目是快乐数: 快乐数的定义如下: 快乐数(Happy Number)是指一个正整数,将其替换为各个位上数字的平方和,重复这个过程直到最后得到的结果为1,或者无限循环但不包含1。如果最终结果为…

层次选择器

层次选择器 1.后代选择器二、子代选择器三、兄弟选择器四、相邻选择器 后代选择器,选择M元素内部后代的N元素(所有N元素) 选择器说明M N后代选择器,选择M元素内部后代的N元素(所有N元素M>N子代选择器,选…

MATLAB 2023a软件下载安装教程

编程如画,我是panda! 这次给大家带来的是MATLAB 2023a的下载安装教程 前言 MATLAB,即Matrix Laboratory的缩写,是一款强大的科学计算软件,以其独特的矩阵计算基础、丰富的数学函数库和直观的数据可视化工具而闻名。作…

神经辐射场(NeRF)概述

神经辐射场(NeRF)是一种用于三维场景重建的深度学习算法。它能够从一组稀疏的二维图片中重建出高质量的三维场景。 以下是对NeRF算法的原理和实现方法的详细解释: NeRF算法原理: 基本概念: NeRF算法基于光线追踪的原理…

BSC/平衡记分卡

一、Balanced Score Card BSC即平衡计分卡(Balanced Score Card),是常见的绩效考核方式之一,是从财务、客户、内部运营、学习与成长四个角度,将组织的战略落实为可操作的衡量指标和目标值的一种新型绩效管理体系。 是…

数据结构第十三弹---链式二叉树基本操作(上)

链式二叉树 1、结构定义2、手动创建二叉树3、前序遍历4、中序遍历5、后序遍历6、层序遍历7、计算结点个数8、计算叶子结点个数9、计算第K层结点个数10、计算树的最大深度总结 1、结构定义 实现一个数据结构少不了数据的定义,所以第一步需要定义二叉树的机构。 typ…

龙芯3A5000上使用腾讯会议

原文链接:龙芯3A5000上使用腾讯会议 hello,大家好啊!今天我要给大家介绍的是在龙芯3A5000处理器上安装使用腾讯会议的经验分享。随着远程工作和在线会议的普及,腾讯会议成为了许多人日常工作不可或缺的工具。而对于使用龙芯3A5000…

HTTP 常见协议:选择正确的协议,提升用户体验(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Docker 镜像

1、联合文件系统 UnionFS(联合文件系统):Union文件系统〈UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several dir…

C练习——汉诺塔

题目: 汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆…

大模型在游戏行业的应用分析

文章目录 一、大模型作用1)节省美术成本2)模仿用户肖像,精准投放3)买量流程的自动化4)缩短视频素材制作周期5)例如新营销形式宣传(图生图)5)故事设计6)辅助代…

品牌帮助中心:提升企业客户服务水平与效率的实用指南

什么是品牌帮助中心?简单来理解,他就是一种加速问题解决效率的方式,是通过在官网设置文章库或者社区的形式,为客户提供自助服务,自我查找问题答案。是一种既能提升问题解决效率,又能提升品牌形象的方式。接…

150套简约流行国内外优秀网页模板打包 /个人主页网站html模板 /html+css网页设计源码(分享)

这里把自己收藏的最新150套简约流行国内外优秀网页模板打包分享给大家,如果有用请点赞收藏,无密源码,直接拿来就可以用的。它是htmlcss网页设计源码,html5网页静态模板。 我分了品类,按行业或应用场景,不但…