离职员工从删库到跑路,咋办?(离职员工删除数据)
mhr18 2024-10-12 04:48 27 浏览 0 评论
当年,Verelox的所有客户数据被一个离职工程师删除,事故非常严重。Verelox是荷兰海牙的一家云主机商。它成立于2014,以VPS、服务器出租和托管为主。它的VPS基于KVM架构,分HDD和SSD,有加拿大、荷兰、法国三处数据中心,也支持Windows系统,支持按小时和月付。事故发生后,Verelox在官网上公布了该事件,并全力为客户恢复数据,但是,已经不可能恢复全部数据。
删除云主机上的客户数据相当于暴力破坏公司核心资产,是一种犯罪行为,该工程师一定会受到法律的制裁,但是巨大的损失已经造成,无法挽回。
比离职员工删库跑路更频繁发生的是各种意外删除数据的事件。
2017年1月31日23:00 左右,Gitlab一名系统管理员在极度疲劳的情况下,尝试删除一个空的目录,结果指令发往了另外一台服务器的命令窗口,等他回过神来的时候,27分钟过去, 终止删除操作为时已晚,大约 300 GB 左右的数据只剩下约4.5 GB。 GitLab.com丢失了 6 小时的数据库数据(问题,合并请求,用户,评论,片段等)。
4 月 5 日,知名的 VPS 服务商 DigitalOcean 出现了一次删除生产数据库的事故。删库导致 DigitalOcean 的控制面板和 API 无法正常使用,时间长达 4 小时 56 分。DigitalOcean 官博撰文致歉,并说明了事故前后过程:“ 在 2017 年 4 月 5 日 10:24 AM EDT,我们开始收到公共服务功能失效的警报。在警报最初的 3 分钟,我们发现主数据库已经被删除了。4 分钟后,我们开始从一台有延迟的数据库副本着手恢复。在接下来的 4 个小时中,我们复制并把数据恢复到主备副本。服务中断这么长时间,主要是因为从副本把数据恢复到在线服务器这个过程非常耗时。” 此次事故的根本原因是工程师驱动的配置错误。有个用于自动化测试的程序,错误使用了生产证书。
无论是主观还是无意,数据库被删除,都是互联网公司难以承受之重,Fintech公司尤其无法接受跟钱相关的数据丢失,技术团队必须要防患于未然。
首先要防止的是,数据库被开发人员误删。
开发人员是否需要连接生产数据?有人说需要,有人说不需要。不同的情况下有不同的道理。这里我们分开来讨论。如果开发人员不需要直接连接数据库,是最好不过的了,就杜绝了数据被开发人员删除的危险,也没有数据被泄露的风险,也不会因为敲出了一个select * from xxx造成负载异常升高。
如果开发人员需要连接呢?通常需要做到以下两点:
- 如果开发人员需要能连接生产数据库,需要给到只读账号,且需要一个人一个账号
- 如果生产库有从库/备库,最好能让开发人员连接从库/备库。
其次,需要防止数据被管理员删除。事实上,Verelox的数据就是被不开心的系统管理员恶意删除的。管理员不能使用root账号直接在操作系统层面操作数据文件,尽量使用客户端从远端连接到数据库进行维护。由于意外失误,像Gitlab管理员一样,在昏昏欲睡的时候,rm -rf清掉整个硬盘的事故也太多了,需要使用堡垒机等工具配合屏蔽这类高危命令。最后,尽量减少使用图形工具,因为太多的图形工具,会隐含的具有某些功能,如autocommit,设置字符集等。
第三,如何防止数据被程序删除呢?通常,架构设计上需要注意,重要数据永远不要直接删除,标记为“删除”状态。不能给程序的用户all privileges。Insert、delete、update各类命令的权限单独赋予。
第四,我们也要防黑客。应用的网络进行分层设计。接入层,应用层,数据层。数据层只对固定的应用服务器开放。数据库永远只放在内网,监听在内网IP上。
第五,必须有周密的备份,即使管理员跑路也不怕。数据的物理备份和逻辑备份相互补充,文件不小心被删除的,用物理备份恢复;表被drop掉的,用逻辑备份恢复。备份也经常需要演练。因为一方面要保证我们的备份可用;另外一个方面我们也需要对多久可以恢复负责。对CTO及运维负责人而言,备份情况也需要每天检查。
最后,请各位读者牢记强哥的独家私藏小秘籍:
- 数据文件被删除了,复制可以救命;数据表被drop掉了,延时复制可以救命;
- 数据文件被rm掉了,不要急,在不关闭进程的情况通过linux的方法恢复文件;
- oracle的flaskback query,flashback database等;
- 在mysql,sql server维护数据的时候关闭autocommit,待确认数据正确之后再提交;
- 各种数据库的基于时间点的数据恢复,有些时候真的非常有用,所以一定要进行周期性的演练。
当然,最好的办法还是好好照顾自家运维人员,开心工作开心生活,减少人肉运维,不要疲劳驾驶,也不要闹到通过删库报复公司报复社会的程度。
运维不易,请多多关爱。
相关推荐
- IM群聊消息如此复杂,如何保证不丢不重?
-
群聊是多人社交的基本诉求,不管是QQ群,还是微信群,一个群友在群内发了一条消息:(1)在线的群友能第一时间收到消息(2)离线的群友能在登陆后收到消息群消息的复杂度要远高于单对单消息。群消息的实时性,可...
- Python 网络爬虫实战:从零到部署的完整流程
-
适用人群:初-中级Python开发者、数据分析师、运维/测试自动化工程师工具栈:Python3.11+requests+BeautifulSoup/lxml+pandas+(...
- 用上Kiro之后,完全没理由为Cursor续费了
-
替Cursor续费前最后一秒,免费IDEKiro把钱包按死在屏幕前五位数年费的AI编程助手,被一匹黑马零元秒杀。用过Kiro的人,开note第一件事就是删掉Cursor的自动续费,动作快到连...
- 分布式微服务中的搜索引擎:架构与实战盘点
-
01、为什么微服务需要分布式搜索?在单体应用时代,我们通常使用单一数据库的全文检索功能(如MySQL的LIKE语句)或简单的搜索引擎(如早期的Lucene)。但随着业务规模扩大,这种架构暴露出诸多问题...
- 产品列表获取API接口详解
-
在现代软件开发中,API(应用程序编程接口)是获取产品列表的核心工具,它允许开发者从远程服务器高效地检索数据。本文将逐步介绍如何设计和使用产品列表获取API接口,包括核心概念、实现步骤、代码示例以及最...
- 企业和个人基于业务知识和代码库增强的大模型生成代码实践
-
作者:京东零售杨亚龙1.源起李明是今年刚加入某互联网公司的研发新人,满怀期待地开始了他的职业生涯。然而,短短两周后,他的热情就被现实浇了一盆冷水。第一周:当他第一次接手需求时,mentor只是简单...
- 从零到一:独立运行若依框架系统并进行本地二次开发
-
####一、环境准备1.**基础环境**:-JDK1.8+(推荐JDK17)-Maven3.6+-MySQL5.7+(推荐8.0)-Redis5.0+-Node.js16...
- 一文教你高效优化在Spring Boot3中遇到深度分页查询性能难题?
-
你有没有这样的经历?在使用SpringBoot3开发项目时,深度分页查询操作让程序运行得越来越慢,页面加载时间变得难以忍受,不仅影响用户体验,还可能导致项目进度受阻。明明代码逻辑看起来没问题,可...
- JAVA面试|如何优化limit分页
-
我们来详细通俗地聊聊如何优化LIMIToffset,size分页。核心问题在于OFFSET的值很大时,性能会急剧下降。想象一下数据库的工作方式,你就明白为什么了。一、为什么OFFSET大时慢?假...
- MySQL(143)如何优化分页查询?
-
优化分页查询是提升数据库性能和用户体验的重要手段。特别是在处理大数据集时,分页查询的效率对系统性能有显著影响。以下是优化分页查询的详细步骤和代码示例。一、传统分页查询传统的分页查询使用OFFSET...
- Seata概述
-
什么是SeataSeata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务也是SpringCloudAlibaba提供的组件Seata官方文档https...
- Docmost:一款开源的Wiki和文档协作软件
-
是一款开源的团队协作Wiki与文档管理工具,定位为Confluence和Notion的开源替代品,专注于提供高效、安全且可定制的知识库解决方案。Docmost的核心优势在于开源免...
- B端系统管理「字典管理」模块实战指南
-
字典管理听起来像“后端杂务”,其实是B端系统配置能力的关键支点。本指南将从真实业务场景出发,系统拆解该模块的设计逻辑、关键字段与典型坑位,让你一文读懂如何搭建一个能跑得久、配得稳的字典模块。一、字典管...
- Spring Boot 整合 Redis BitMap 实现 签到与统计
-
要在SpringBoot中实现RedisBitMap来进行签到和统计,您需要按照以下步骤进行操作:添加Redis依赖:在pom.xml文件中添加Redis依赖:<dependen...
- 周期性清除Spark Streaming流状态的方法
-
在SparkStreaming程序中,我们经常需要使用有状态的流来统计一些累积性的指标,比如各个商品的PV。简单的代码描述如下,使用mapWithState()算子:valproductPvSt...
你 发表评论:
欢迎- 一周热门
-
-
Redis客户端 Jedis 与 Lettuce
-
高并发架构系列:Redis并发竞争key的解决方案详解
-
redis如何防止并发(redis如何防止高并发)
-
Java SE Development Kit 8u441下载地址【windows版本】
-
开源推荐:如何实现的一个高性能 Redis 服务器
-
redis安装与调优部署文档(WinServer)
-
Redis 入门 - 安装最全讲解(Windows、Linux、Docker)
-
一文带你了解 Redis 的发布与订阅的底层原理
-
Redis如何应对并发访问(redis控制并发量)
-
Oracle如何创建用户,表空间(oracle19c创建表空间用户)
-
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (83)
- php redis (97)
- redis 存储 (67)
- redis 锁 (74)
- 启动 redis (73)
- redis 时间 (60)
- redis 删除 (69)
- redis内存 (64)
- redis并发 (53)
- redis 主从 (71)
- redis同步 (53)
- redis结构 (53)
- redis 订阅 (54)
- redis 登录 (62)
- redis 面试 (58)
- redis问题 (54)
- 阿里 redis (67)
- redis的缓存 (57)
- lua redis (59)
- redis 连接池 (64)