mysql/mariadb知识点总结(26):数据库备份相关的基础知识

  • A+
所属分类:mysql  数据库

在本博客中,"mysql"是一个系列文章,这些文章主要对mysql/mariadb的常用知识点进行了总结,每一篇博客总结的知识点有所不同,具体内容可参考mysql文章列表。

mysql文章列表直达链接:mysql知识点总结

 mysql/mariadb知识点总结(26):数据库备份相关的基础知识

数据的重要性不言而喻,所以,我们也就不用啰嗦为什么要对数据进行备份了,此处我们总结一些与备份有关的知识点,以便以后回顾。

 

备份数据的最终目的是为了在出现一些意外情况时,能够通过备份将数据还原,所以单单的备份数据往往是无法满足还原时的需求的,所以在备份数据库时,除了要备份数据本身,还要备份相关的数据库环境,如配置文件,定时任务,sudo权限等等相关的信息。

 

备份相关术语

不管是哪一种数据库,在备份时,都会提及到"备份策略"的概念,说到"备份策略",就需要聊聊一些常用的术语与概念,此处我们先大致的列出与备份策略相关的术语,然后在细细的解释他们,常见术语如下。

全量备份

差异备份

增量备份

时间点恢复

热备

温备

冷备

物理备份

逻辑备份

 

全量备份(Full Backup)

全量备份也叫完全备份,说白了,全量备份就是对某个时间点的所有数据进行一个完全的备份,对应时间点的所有数据都被包含在完全备份中。

 

差异备份(Differential Backup)

差异备份也叫差量备份,什么是差异备份呢?"差异备份"是对上一次"全量备份"以后变化的数据的备份,比如,这周日2点对数据库进行了"全量备份",当下周一对数据库做差异备份时,将会备份从周日2点以后到周一差异备份时期间的所有变化的数据,如果下周二对数据库进行差异备份,则会备份从周日2点以后到周二差异备份时期间的所有变化的数据,同理,如果下周三对数据库进行差异备份,下周三的差异备份将会包含周日2点以后到周三差异备份之时期间的所有变化的数据,聪明如你一定想到了,如果只在周日2点做了一次完全备份,之后再也没有进行过完全备份,都是通过差异备份的方式进行备份,那么当我们需要通过备份将数据还原到最近的时间点时,只要拥有周日的完全备份与最近一次的差异备份即可,中间的差异备份时不需要的。说白了,每次差异备份都是针对上一次"完全备份"之后的变化数据进行的。示意图如下

mysql/mariadb知识点总结(26):数据库备份相关的基础知识

 

增量备份(Incremental Backup )

什么是增量备份呢?"增量备份"是对上一次"备份"以后变化的数据的备份。细心如你一定发现了,"差量备份"与"增量备份"唯一的区别就是备份的"起始参考点"不同,"差异备份"的起始点是最近一次的"全量备份","增量备份"的起始点是最近的上一次的"备份",不管上一次"备份"是"全量备份"、"差异备份" 还是 "增量备份"。如果进行增量备份,备份的数据就是上一次备份以后产生变化的数据。仍然以周日备份的场景进行示意,增量备份的示意图如下。

mysql/mariadb知识点总结(26):数据库备份相关的基础知识

 

时间点恢复

其实不管是全量备份,还是差异备份,或者是增量备份,都不能解决另外一个问题,这个问题就是时间点恢复,那么什么是时间点恢复呢?我们继续聊。

假设,周日2点我们进行了全量备份,我们想要在下周一2点进行第二次备份,但是如果在周一2点之前,数据库崩溃了,需要还原,我们该怎么办呢?如果只依靠周日2点的备份进行还原,那么我们最多只能将数据恢复到周日2点时的样子,但是周日2点以后的所有数据变化都会丢失,因为我们并没有来得及对2点以后的数据进行备份,我们该怎样解决这个问题呢?没错,我们可以通过二进制日志解决这个问题。

至于二进制日志的相关知识点,在本博客中已经单独总结为了一片文章,如有需要,可以点击如下链接进行参考。

http://www.zsythink.net/archives/1286

因为所有数据变化都会被记录到二进制日志中,所以,我们可以先通过备份将数据还原到周日2点,然后再通过二进制日志,将2点以后的操作"重放"一遍,这样,数据就恢复到了崩溃之前的样子,这就是时间点恢复的概念,也就是说,在实际的还原数据的工作中,我们如果想要完整的还原数据,往往需要数据备份文件以及二进制日志文件,二者缺一不可。

 

热备

热备就是热备份,什么意思呢?就是在数据库正常运行的情况下进行备份,也就是说,在热备期间,数据库的读写操作均可正常进行,所以,热备份不能只依靠简单的拷贝命令,而是需要专门的备份工具,而且技术复杂程度较高,mysql中的myisam存储引擎不支持热备,InnoDB存储引擎支持热备。

 

温备

温备是什么意思呢?温备比热备稍弱一点,如果使用温备的方式对数据库进行备份,在温备期间,数据库只能进行读操作,不能进行写操作,即数据库在可读但不可写的状态下进行备份。

 

冷备

懂了热备与温备,冷备就好理解了,在冷备期间,数据库的读写操作均不可进行,即读写操作均不可进行的状态下所做的备份被称为冷备。冷备虽然会影响数据库的运行,但是备份出的数据的可靠性是最高的,冷备的备份过程往往是最简单的,mysql中,可能会通过复制结构去做冷备。

 

物理备份

物理备份就是直接备份数据库所对应的数据文件,以达到备份的目的,物理备份相对逻辑备份来说,性能更强。

 

逻辑备份

逻辑备份就是将数据从数据库中导出,并且将导出的数据进行存档备份,这种备份方式被称作逻辑备份。

 

上述各种术语其实是对备份的不同特性以及不同维度进行了分类描述。

  

mysql中常见的备份工具

mysql中有一些常见的备份工具,此处我们先来简单的总结一下它们,但是不会具体的介绍它们怎么使用,我们会在以后的总结中,进行详细的示例。

 

mysql中常见的备份工具如下。

 

mysqldump

mysqldump是mysql自带的备份工具,它是一种逻辑备份工具,也就是说,它会将数据从数据库中读出,转化为对应的sql语句。

mysqldump能够实现完全备份或部分备份。

使用innodb表类型的表能够使用mysqldump进行热备。

使用myisam表类型的表只能够使用mysqldump进行温备。

如果数据量较小,使用mysqldump是一种选择。

 

xtrabackup

由Percona提供,Percona是一个NB的组织,Percona对mysql的研究很深入,xtrabackup就是Percona出品的数据库备份工具,而且是开源的免费的。

xtrabackup支持对Innodb存储引擎进行热备。

xtrabackup是一种物理备份工具,所以性能强悍。

xtrabackup支持完全备份,差异备份,增量备份,部分备份等功能。

 

通过select语句进行部分备份

通过select语句将表中的数据导出到指定文件中,例如导出a表数据到/testdir/a.backup中,在使用select语句备份a表的同时,最好将a表的表结构也备份一份,因为还原的时候很有可能用到。

select * from a into outfile '/testdir/a.backup';

如果想要通过a.backup文件恢复a表的内容,可以创建一个新的表,然后使用load data将a.backup中的数据导入到新表中,示例如下。

create table b(id int);

load data infile "/testdir/a.backup" into table b;

 

cp命令或tar命令

利用上述命令,在linux中直接对数据文件进行备份,这种方式只适用于冷备的方式。

 

其实,我们最常用的工具还是mysqldump和xtrabackup,所以,我们只要掌握它们即可。

 

weinxin
我的微信公众号
关注"实用运维笔记"微信公众号,当博客中有新文章时,可第一时间得知哦~
朱双印

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: