删库后除了逃逸,还能采取哪些应对措施?

摘要:前言 Hi,欢迎订阅白日梦的MySQL专题! 这篇文章我们一起闲聊,如果你不小心把MySQL中的数据删了,除了跑路还能干啥? 看完本篇你将了解:常见的数据库备份方式、mysqldump实战、一条binlog长啥样、什么是gtid?什么是bi
目录前言数据备份有哪些种?实用的mysqldump备份方式得先知道什么是GTID看一条binlog长啥样数据恢复推荐阅读-白日梦的MySQL专题推荐阅读-二本应届生的大学生活,已上岸百度下一篇:两阶段提交和分布式事务 前言 Hi,欢迎订阅白日梦的MySQL专题! 这篇文章我们一起闲聊,如果你不小心把MySQL中的数据删了,除了跑路还能干啥? 看完本篇你将了解:常见的数据库备份方式、mysqldump实战、一条binlog长啥样、什么是gtid?什么是binlog位点?mysqlbinlog数据恢复实战。 数据备份有哪些种? MySQL中数据备份的方式还是蛮多的,常见的有冷备份、逻辑备份、热备份、快照备份。 什么是冷备份? 所谓的冷备份,说白了就是在数据库停止运行的情况下,直接备份磁盘中MySQL用来存储数据的那些数据文件。 在前面的文章中,白日梦跟大家分享过MySQL的表空间。看过那篇文章的同学都是知道,MySQL中的数据最终都存储在表空间中的。表空间 == 表空间文件。其实而所谓的空间,本质上对应着存在于操作系统磁盘上的肉眼能看到的物理文件。 下面你可以看一下我的MySQL的表空间文件都是怎么配置的,以及它们都在哪里。 MySQL版本:5.7 ,并且我在 my.cnf 配置文件中添加了如下的配置。 # 表示每一个数据库单独使用一个表空间 innodb_file_per_table=on 然后我创建数据库:stusy。 创建数据表:test_backup。 进入到如下的目录中,你可以看到MySQL为我们创建的数据库表创建出了单独的目录,而目录中的有 .frm、.idb文件就是冷备份需要备份的文件。 什么是逻辑备份? 逻辑备份指的是使用 mysqldump 工具去备份数据。使用mysqldump进行数据库的逻辑备份也是在做的各位RD需要掌握的技能。日常开发中难免会有将线上的数据备份到测试环境使用的场景。 为啥说mysqldump是逻辑备份?原因大概是:你使用mysqldump去备份最终得到的参数其实是一堆sql,再通过回放sql的形式完成数据的恢复。白日梦之前的文章中跟大家分享过(可自行查看历史文章哈)。在MySQL中数据表、数据行其实是逻辑存上的概念。像数据页这中概念是物理真实存在的。所以你用mysqldump得到一堆sql,自然称得上是逻辑备份喽。 下文中具体说,mysqldump实战。 什么是热备份? 所谓热备份其实是指:直接对运行中的数据库进行备份。相对于冷备份,热备份还是比较复杂的。你想啊,对处于运行过程中的数据库进行备份,肯定就得将一些增量的数据也备份进去。 通常人们会使用一款叫:xtraback 的工具完成数据库的热备份。 除此之外,我了解有一款Golang写的开源工具 ghost,在github上还是挺火的。它是一款支持做无损DDL的工具(后面会专门有一篇文章讲这个工具的原理)。这款工具在实现支持无损DDL功能时,有一部分逻辑本质上也是在支持增量数据的备份。 ghost的实现手段是:添加binlog监听事件,监听到binlog event后去解析binlog得到sql,再回放这个SQL。就像是从库使用主库对binlog进行数据恢复一样。 什么是快照备份? 再了解一下什么是快照备份: 快照备份不是数据库本身提供的能力,本质上它是借助于文件系统的快照功能来实现的对数据库的备份。 我们知道的Linux服务器本质上也是电脑的,它会有自己的磁盘,无论是固态硬盘,还是机械磁盘。反正会有这种固态存储。还需要进一步对磁盘进行分区。然后才有将Linux文件系统中的目录都会挂载在不同的分区上。这么做的目的,简单来说就像你的window有C盘、D盘、E盘。D盘中的出问题后不会影响E盘一样。 快照备份要求:数据库的所有数据文件都要放在一个数据分区中。 常见的支持快照工具的文件系统和设备有:FreeBSD、UFS文件系统、Solaris的ZFS文件系统。GNU/Linux的LVM(Logical Volume Manager) 实用的mysqldump备份方式 本小节看几个实战mysqldump备份case。
阅读全文