来源 | 阿丸笔记

责编| Carol

封图| CSDN│下载于视觉中国

“删库跑路”这个词儿,经常被挂在嘴边当玩笑,是因为大家都知道,一旦真的发生这样的事情,企业损失是无比惨重的。

本文作者为 CSDN 博客的一位博主, 他的描述中得知前段时间作者所在的公司,由于运维同事的一次误操作,清空了内网核心数据库,导致了公司内部管理系统长时间不可用,大量知识库内容由于没有备份险些丢失。

结合近期的删库跑路事件,我们可以看到,数据库的备份与恢复显得尤为重要。

本文将对此次内网数据恢复过程做一些整理,介绍删库后的抢救方案。同时,引发对数据库稳定性的思考。

接下来让我们从作者的角度,来看看他们是如何对数据库进行抢救的。

数据抢修

这份内网数据事先没有特意备份,所以一开始认为需要从磁盘恢复数据了。所以紧急联系了数据恢复公司,希望过来恢复磁盘数据。

这里需要注意,数据恢复公司建议马上关机,避免磁盘数据被覆盖。

联系数据恢复公司的同时,运维同事在内网找到了几个残缺的备份文件,包括去年4月份的一个全量备份数据、今年2月初一个半全量备份数据(备份到r开头的表就失败了,剩余表没有备份),以及近7天到binlog日志文件。

所以立刻进行另一套恢复方案:

1)用今年2月初的半全量数据恢复一个库A

2)用去年4月份的全量数据恢复一个库B

3)将B数据库中r开头之后的表拷贝一份到数据库A中

4)数据库A中重放近3天的binlog。(注意,binlog回放时间截止到drop命令时间之前)

1、dump文件恢复

一开始想通过阿里云,把dump文件恢复到rds上。

结果发现需要super权限,而这个权限是阿里云高权限账号(另外还有普通账号)也不具备的,问了阿里云也不提供。因此,无法恢复到rds。

所以我们只能把dump文件恢复到本地数据库。

在ECS上建立一个mysql数据库,然后就是dump文件恢复。

有两种方式:

1)命令行恢复

mysql -u root xxxdb < xxxx-backup.sql

2)在mysql客户端中恢复

用root登陆后

use xxxdb;
source /data/xxxx-backup.sql

2、binlog文件重放恢复

基于起止时间恢复数据

sudo mysqlbinlog --start-datetime=“2020-02-16 17:00:01” --stop-datetime=“2020-02-20 17:00:00” —database=xxxdb mysql-bin.000218 | mysql -f -u root xxxdb

–database 指定了使用binlog中的哪个数据库进行导入,否则,如果binlog中有多个库的操作记录,会大量报错。

更多binlog命令参数见:

https://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html#option_mysqlbinlog_database

-f 用于mysql命令,重建过程中如果遇到问题会继续执行而不是中断退出。

Actually mysqlbinlog does not stop after error, mysqlbinlog just converts log file to text format, nothing more. The problem is that mysql client stops after error. Please try ‘mysql -f’.

数据备份

数据备份可以有多种方式,这里介绍三种

1、本地dump备份数据文件

比较方便存储,不过用起来限制也比较多,容易中断。

mysqldump --max_allowed_packet=1024M -u root xxxxdv > 20200219.sql

2、阿里云dts迁移备份

可以在阿里云上建一个dts迁移任务(迁移任务基本免费,同步任务收费),然后通过dts将源数据库直接迁移到rds、ecs自建数据库、vpc网络下到自建数据等地方。

可以避免dump还原的过程。

需要有个目标库,备份不是以简单的数据文件形式,而是一个备份数据库的形式。

3、xtrabackup(简称xbk)

https://www.percona.com/software/mysql-database/percona-xtrabackup

基于拷贝物理文件和redo来实现备份。

数据库稳定性思考

不管是运维的误操作,还是删库跑路的事件,从根本上反映了企业数据库稳定性管理的不足。

任何事后抢救的措施,都比不上事前的谨慎防范。

如何提高企业数据库的稳定性,避免出现类似这样的事情呢?

1、统一技术栈,使用云厂商的云数据库

从现在云技术的发展来看,以阿里云、华为云等大厂提供的云数据库,能大大降低企业数据库的运维成本。

虽然云数据库可能比自建数据库的价格贵一点,但是,云数据库提供的完整的配套设施,如备份恢复、监控报警、技术支持、数据库高可用等,都会给企业数据库稳定性带来巨大帮助。从长期来看,能够大大节约企业的运维成本和人力成本。

另外,我特意去看了下阿里云的rds数据库,有完整的备份恢复机制,而且七天内的备份数据是不可删除的。

所以,如果使用了云数据库,那基本上不需要担心数据丢失或者被人恶习删除的问题了。

2、自建数据库的完善备份机制

当然,有的公司虽然使用了云数据库,但是出于数据安全性的角度,还是会有自建数据库的可能。

如果使用了自建数据库,那么一定需要有完善的备份机制。

我司自从发生了误操作删除内网数据的事件后,立刻引起重视,重新盘点梳理了核心数据的备份机制,包括云数据库、自建数据库,对于核心数据(包括但不限于生产数据、内部核心数据等)必须实施定期全量备份,同时考虑末日容灾,实施跨机房、跨云厂商的数据备份。

3、更健全的权限管理系统

除了数据备份外,我们还可以看到,数据库权限管理的重要性。

尤其中小企业,数据库权限要么没有管理,开发人员可以任意操作;要么是集中在少数几个运维同事手上。

无论哪种,都不安全。

最好的方式,还是开发一个统一数据库管理操作平台(或者购买类似阿里云DMS产品),在系统层面进行数据库的权限管控。

所有人员都只能通过这个平台操作数据库,同时,禁用危险命令,对高危操作进行分级审核。

《原力计划【第二季】- 学习力挑战》正式开始!即日起至 3月21日,千万流量支持原创作者!更有专属【勋章】等你来挑战

推荐阅读:如何与亦敌亦友的 null 说拜拜?大神原来是这么做的!
大数据成长之路:谈谈那些必须学习的Linux基础知识
无需3D运动数据训练,最新人体姿势估计方法达到SOTA | CVPR 2020
国产 14nm 迎曙光,进口荷兰光刻机顺利入厂!
从哈希函数、哈希冲突、开散列出发,一文告诉你哈希思想与哈希表构造到底是什么!
前端 Webpack 工程化的最佳实践
真香,朕在看了!

MySQL数据库无完整备份删库,除了跑路还能怎么办?相关推荐

  1. mysql试题百度云_MySQL数据库无完整备份删库,除了跑路还能怎么办?

    1.背景 前段时间,由于运维同事的一次误操作,清空了内网核心数据库,导致了公司内部管理系统长时间不可用,大量知识库内容由于没有备份险些丢失. 结合这两天微盟的删库跑路事件,我们可以看到,数据库的备份与 ...

  2. 删库到跑路?还得看这篇Redis数据库持久化与企业容灾备份恢复实战指南

    本章目录 0x00 数据持久化 1.RDB 方式 2.AOF 方式 如何抉择 RDB OR AOF? 0x01 备份容灾 一.备份 1.手动备份redis数据库 2.迁移Redis指定db-数据库 3 ...

  3. mysql高级-15-数据库备份与恢复(删库不跑路)

    mysql高级 前言 1.物理备份与逻辑备份 2.mysqldump实现逻辑备份 2.1 备份一个数据库 2.2 备份全部数据库 2.3 备份部分数据库 2.4 备份部分表 2.5 备份单表的部分数据 ...

  4. mysqldump全量恢复_删库不跑路-详解MySQL数据恢复

    日常工作中,总会有因手抖.写错条件.写错表名.错连生产库造成的误删库表和数据的事情发生,那么,如果连数据都恢复不了,还要什么 DBA. 相关文章 MySQL备份策略:https://segmentfa ...

  5. 从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库

    从删库到跑路,就是这么迅速!程序员为了报复同事删了公司数据库 一只有头发的程序猿 2019-08-23 09:38 做过互联网行业的都知道,数据库对公司是至关重要的,存储了大量的数据在里面,要是没有这 ...

  6. MySQL从删库到跑路(2):大爷的SQL私房菜

    大爷的SQL私房菜 夜色如墨,月凉如水,一轮皎洁的圆月高高地挂在夜空之上,平日里鼾声如雷的室友今夜也停止了打鼾,如此静谧的夜晚,李有为却辗转难眠. 时间悄然来到凌晨一点半,他已经在窗边站了53分钟23 ...

  7. MySQL从删库到跑路(5):in and not

     "哈哈哈哈,看你这几天没来上课,我还以为你去拜什么高人为师了?原来就是这个烂番薯.臭鸟蛋的小卖部大爷学装逼,你逗我玩呢?哈哈哈哈哈"  "哈哈哈哈,一个老屌丝,一个小屌 ...

  8. 手误【删库】 == 跑路,不存在的 ——删瓦辛格

    手误[删库] ==  跑路,不存在的  --删瓦辛格 前言 今天公司服务器的宝塔打不开,让我去修(ps:宝宝委屈) 打开找一下问题所在 问题: 发现是宝塔官方的cdn好像挂掉了 解决思路: (1)本地 ...

  9. Linux 下谨慎使用 rm,避免从删库到跑路的悲剧发生

    我们该如何再次避免删库"跑路"等事件的再次发生? 对此,在企业首先做好权限管理以及多重审核机制的同时,CSDN 也曾教诸多程序员们如何在 Linux 下谨慎使用 rm,避免从删库到 ...

最新文章

  1. 数据中心暖通设计若干思考
  2. GDI+ 学习记录(31) 图像颜色变换(TGPImageAttributes)
  3. 世界杯来了!小程序赛事操作来一波~
  4. RabbitMQ的Android端接收
  5. 专题四——线段树、树状数组
  6. web项目中如何启动爬虫程序?Django+Requests+Ajax制作可视化翻译界面详解
  7. 质量提高90%以上,智能化施工为高铁建设提速增效
  8. 37个 safari 快捷键,让Mac网页浏览更方便
  9. 家庭局域网_分析 | 如何查询局域网内在用的IP地址?
  10. Android自定义圆角矩形图片ImageView
  11. 阿里Java后端开发面经,面试官都替我感到绝望
  12. 为全面硬件升级做好准备 鑫谷开元T1全塔机箱评测
  13. 【网络安全】ip地址、公网、私网
  14. 日有所思(6)——直流电机注意点
  15. 看完这篇文章受益终身
  16. 安卓和ios的app测试有什么区别?
  17. ABF平台设计(一)-新一代标准化中后台研发平台
  18. 大豆技术面分析_大豆高产栽培关键技术分析,简单、明了轻松学会
  19. 我的创作纪念日——“永远相信美好的事情即将发生”
  20. 一本通 1.5.3 字符数组

热门文章

  1. php抓取页面生成html,PHP smiple html dom抓取页面内容
  2. 命令逐行显示_在LoadRunner中执行命令行程序之:popen()取代system()
  3. 王者体验服服务器注册人数已满,王者官方大厅奖励有多难获得?服务器直接崩溃,玩家:别发红包了...
  4. python统计中文字符的个数_python统计中文字符数量的两种方法
  5. 谁说数学没有用?披着小学数学外衣的,经典程序员面试题!
  6. 只用一周的业余时间,这位逆天博士生解决了困扰数学界数十年的难题
  7. 一个困扰数学家的古老谜题:意大利面能否被折成两段?
  8. mongodb python 存文件_Python保存MongoDB上的文件到本地的方法介绍
  9. (pytorch-深度学习系列)深度卷积神经网络AlexNet
  10. WiFi的基本调制过程