Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微盟事情的反思:希望删库跑路永远是一句玩笑而已

微盟事情的反思:希望删库跑路永远是一句玩笑而已

作者头像
jeanron100
发布于 2020-03-04 05:37:33
发布于 2020-03-04 05:37:33
5220
举报

读完需要9 分钟

速读仅需7分钟

相信这些天微盟的事情大家已经听说了。

每每看到行业内的数据事故,我们在感慨之余,更需要的就是自省,因为这可以敲响我们已有状态的警钟。微盟技术团队从一个创业团队一路走来,逐步建立了较为成熟的安全管理规范,对服务器数据访问权限有着明确的分层和分级的授权管理制度,这次虽然有疏忽,实际上也是受害者。

根据事件跟踪得知,本次腾讯云从一开始就大力支持微盟,派了很多技术专家来帮助微盟和微盟的客户,使得恢复得以顺利开展。

但是问题要补救和修复,需要一套流程和制度和技术相辅相成,而且是一个持久改进的过程。米兰.昆德拉曾经说过:永远不要以为可以逃避,因为每一步都决定着最后的结局。

从个人理解,因为涉及的环境复杂,涉及团队较多,所以恢复效率和验证方面需要一些时间。在数据恢复方面,有一条不成文的规定,那就是数据在一定程度上可以丢,但是不能乱,丢的数据,可以通过其他方式进行补救,但是数据一乱就失去了修复的基准。因为这次是人为恶意操作,所以恢复的难度会更大。

我打算通过如下的三个部分来进行阐述。

流程:

1.完善故障演练流程,作为一项共同目标来请协作完成,做到忙而不乱

很多公司都会对故障演练存在一些疑虑,因为这会带来一些潜在的隐患,越是不能动,不敢动,在出问题的时候修复的效率是很低下的,每个人和团队更加关注自己这一部分的工作,显然会忽略一些相关的环节,所以能够组织故障演练的流程和规范,把这些梳理和固化下来,在处理问题的时候才能够做到忙而不乱。

2.完善故障响应流程,什么等级的问题系统哪些负责人介入

为什么很多问题的修复进展不可控,一方面是需要团队协作,另一方面是临时去协调和熟悉问题,排查问题的效率是比较低的,可以考虑引入故障的等级分类,及时通知相关团队,把一些问题的处理作为预先处理的环节提前接入。

3.运维操作需要报备

运维操作不做无准备的操作,不做加塞操作(比如临时补充一些未经测试的脚本),重要操作,重大操作都需要报备,及时通告,把被动变为主动。

4.引入审计流程,实现独立的服务审计机制

审计环节是一个相对重要的独立环节,可以引入服务审计机制,可以通过独立的审计服务发现潜在的隐患,及时督正问题。

5..业务异常预警,需要同步相关链路层

对于业务层的异常,业务预警是尤其关键的,及时预警,及时同步到相关的链路,可以避免系统雪崩的情况。

技术:

1.完善备份恢复体系,使得恢复能够可控,高效。

比如基础备份(全备和增量备份)和热数据恢复(基于binlog的闪回技术)

备份恢复体系的建设是数据库建设的基础,也是衡量服务可用性的最后一根稻草。充分结合全量备份和增量备份,提高恢复的效率。

比如下面是一个全量备份和增量备份方案,实现一次全备,永远增量的实现策略,然后在这个基础上实现基于binlog的闪回。

2.集群环境的恢复是系统薄弱环节。系统服务之间互相依赖,这是之前很少有人关注的,所以毫无疑问,这是一块硬骨头,我们需要重点关注。

3.使用回收站技术,杜绝人为恶意,误删除

备份能够解决一些异常情况的数据恢复,但是效率相对不高,从规范角度来说,如何避免危险操作,转而使用更加优雅可控的处理方式是我们需要思考的问题。

Drop操作是默认提交的,而且是不可逆的,在数据库操作中都是跑路的代名词,MySQL层面目前没有相应的Drop操作恢复功能,除非通过备份来恢复,但是我们可以考虑将Drop操作转换为一种可逆的DDL操作。

MySQL中默认每个表有一个对应的ibd文件,其实可以把Drop操作转换为一个rename操作,即把文件从testdb迁移到testdb_arch下面;从权限上来说,testdb_arch是业务不可见的,rename操作可以平滑的实现这个删除功能,如果在一定时间后确认可以清理,则数据清理对于已有的业务流程是不可见的,如下图所示。

此外,还有两个额外建议,一个是对于大表变更,尽可能考虑低峰时段的在线变更,比如使用pt-osc工具或者是维护时段的变更,就不再赘述了。

4.服务权限设置,需指定客户端权限

分业务管理主库和备份库,是互联网行业的普遍惯例,很多公司普遍都会授予运维较大的权限,这也是导致很多故障的潜在隐患。

在这方面我们可以参考如下的一张设计图(来自张文宇老师),可以在多个环节发力,改进权限问题。

制度:

制度相对来说是比较严格,冷面的,我们可以在技术和流程规范之中寻找一些平衡点来辅助作为制度的基石。比如,密码的安全等级设置,权限管理引入审批制度等,在此就不在赘述了。

希望删库跑路只是大家的一种玩笑,一旦当真就麻烦了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【建议收藏】Jetpack Compose编程知识全汇总 (含详细实例讲解)
Jetpack Compose是Google I/O 2019 发布的Andorid UI框架,它不同于Andorid常见的Xml+命令式Coding的UI开发范式,而是基于Kotlin的DSL实现了一套类似React的声明式UI框架。Jetpack Compose目前仍然处于Alpha版本目标是2020年能够发布稳定的Beta版本。伴随React Native、Flutter等大前端框架的兴起以及Jetpack Compose、SwiftUI等native框架的出现,声明式UI正逐渐成为客户端UI开发的新趋势。
网易Leo
2021/12/09
6.6K0
【建议收藏】Jetpack Compose编程知识全汇总 (含详细实例讲解)
compose--初入compose、资源获取、标准控件与布局
compose正式发布已经一年多了,越来越多的开发人员选择使用它,声明式UI也是未来的一个主流趋势,本人也是一年前学习后,并没有真正的使用,所以本着边学习,边分享的心态,准备写个compose系列的文章 首先compose目前只支持kotlin,基于google对移动端的鸿图,未来应该也不会支持其他语言,和传统安卓的xml布局不同,compose是通过kotlin定义一个一个组件,由于是通过代码定义的组件,每个组件都可以很方便的重用,这点在UI开发时确实便利了不少。至于声明式UI和命令式UI的区别,相信你会在后续实际使用时有很大的感触
aruba
2022/12/06
6.6K0
compose--初入compose、资源获取、标准控件与布局
Android | Compose 初上手
Jetpack Compose 是用于构建原生 Andorid 界面的新工具包,Compose 使用了更少的代码,强大的工具和直观的 Kotlin Api 简化并且加快了 Android 上界面的开发。
345
2022/06/12
5.5K0
Android | Compose 初上手
Jetpack-Compose 学习笔记(一)—— Compose 初探
历时两年,Android 团队推出了全新的原生 Android 界面 UI 库——Compose。当然,Compose 也是属于 Jetpack 工具库中的一部分,官方宣称可以简化并加快 Android 上的界面开发,可以用更少的代码去快速打造生动而精彩的应用。1.0 版本就在上个月底刚刚发布,而且可以在生产环境中使用!不管咋样,先上手看一看!
修之竹
2022/08/19
2.3K0
Jetpack-Compose 学习笔记(一)—— Compose 初探
安卓软件开发:使用Jetpack Compose和Room开发NimWishApp-上篇
在Demo中,采用了最新的Jetpack ComposeM3技术栈,结合了Room数据库实现数据的持久化存储,提供了一个从UI层到数据层的完整解决方案,展示了从0到1的开发。
Nimyears
2024/10/03
4550
安卓软件开发:用JetpackCompose实现NimReplyAppUI上篇
NimReplyApp 是一个模拟电子邮件应用的案例项目,用户可以浏览邮件、查看详细内容和发送回复,在日常工作和生活中都很常见。
Nimyears
2024/10/15
5400
Android | Compose 状态管理
应用中的状态指的是可以随时间变化的任何值。这个定义非常广泛,例如从数据库到类的变量,页面上显示的提示信息等。
345
2022/06/12
1.7K0
Android | Compose 状态管理
Jetpack Compose中的基本组件及组件提取
除了布局组件外,Jetpack Compose 还提供了一系列其他常用的 UI 组件。
码客说
2024/03/29
3160
Jetpack Compose中的基本组件及组件提取
从0上手Jetpack Compose,看这一篇就够了~
2月底的时候,Android 官方发布了Compose的完整课程。了解到许多小伙伴还没开始学习Compose,所以我写了一篇基础文章,让我们一起轻松上手Compose~
黄林晴
2024/01/11
1.8K0
从0上手Jetpack Compose,看这一篇就够了~
Android | Compose 生命周期和附带效应
可组合项 应该没有附带效应,但是,如果在对应用状态进行转变时需要使用可组合项。此时你应该使用 Effect API , 以便以可以预测的方式来执行这些附带效应
345
2022/06/12
1.4K0
Android | Compose 生命周期和附带效应
安卓软件开发:使用Jetpack Compose和M3的轮播图和列表App-上篇
这个应用中常见的 UI 需求是轮播图、列表和弹窗,使用 Jetpack Compose 和 M3 的组件,可以快速、高效编码现代化的 UI。
Nimyears
2024/10/12
8100
掌握 Android Compose:从基础到性能优化全面指南
本文介绍了 Android Compose 的基本概念,探讨其状态管理、列表处理以及性能优化的关键技术,帮助读者更好地理解和运用这一强大的 UI 框架。
陆业聪
2024/09/24
1.3K0
掌握 Android Compose:从基础到性能优化全面指南
Jetpack Compose中的分页器Pager的使用
如需以左右或上下方式浏览内容,您可以分别使用 HorizontalPager 和 VerticalPager可组合项。
码客说
2024/03/29
7500
Android Compose 新闻App(五)Room复杂数据、AlertDialog弹窗、页面导航
  在上篇文章中,我们进一步对EpidemicNews的Desc数据进行处理,本文章中,要解决根本问题,那就是把EpidemicNews直接保存到数据库中。本篇文章运行效果图
晨曦_LLW
2022/04/22
1.7K0
Android Compose 新闻App(五)Room复杂数据、AlertDialog弹窗、页面导航
compose--附带效应、传统项目集成、导航
该文章将是compose基础系列中最后一篇,附带效应是这篇文章的重点,其余补充内容为如何在传统xml中集成compose、compose导航的使用
aruba
2023/01/18
2.3K0
Jetpack-Compose 学习笔记(五)—— State 状态是个啥?又是新概念?
前面几篇笔记讲了那么多内容,都是基于静态界面的展示来说的,即给我一个不变的数据,然后将它展示出来。如何在 Compose 中构建一个随数据而变化的动态界面呢?相信看完这篇就知道了。
修之竹
2022/08/19
2.4K0
Jetpack-Compose 学习笔记(五)—— State 状态是个啥?又是新概念?
Android Compose 新闻App(三)网络数据Compose UI显示加载、Room和DataStore使用
  现在数据已经有了,现在主要就是Compose UI的设计。完成本篇文章,效果图如下:
晨曦_LLW
2022/04/15
3.3K0
Android Compose 新闻App(三)网络数据Compose UI显示加载、Room和DataStore使用
深度解析 Jetpack Compose 布局
Jetpack Compose 是用于构建原生 Android 界面的新工具包。它可简化并加快 Android 上的界面开发,使用更少的代码、强大的工具和直观的 Kotlin API,快速让应用生动而精彩。Compose 使用全新的组件——可组合项 (Composable) 来布局界面,使用 修饰符 (Modifier) 来配置可组合项。
Android 开发者
2022/03/29
2.2K0
深度解析 Jetpack Compose 布局
安卓软件开发:Jetpack Compose 和 Material 3 实现高级登录页面(Kotlin)
在项目的 build.gradle 文件中添加 Compose 和 Material 3 的依赖项:
Nimyears
2024/09/14
9470
安卓软件开发:使用 Hilt 在 Jetpack Compose 和 M3 实现依赖注入App
Hilt 是 Android 官方推荐的依赖注入框架,简化了组件之间的依赖管理,特别是当项目复杂度增加时,依赖注入可以简化了代码。
Nimyears
2024/09/29
7320
推荐阅读
相关推荐
【建议收藏】Jetpack Compose编程知识全汇总 (含详细实例讲解)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档