数据库 之 数据备份和恢复概念
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库 之 数据备份和恢复概念相关的知识,希望对你有一定的参考价值。
本文主要介绍数据备份和恢复的相关概念备份:存储的数据副本;
原始数据:持续改变;
恢复:把副本应用到线上系统;
仅能恢复至备份操作时刻的数据状态;
时间点恢复:通过binary logs实现基于时间点的恢复;
为什么备份?
灾难恢复:硬件故障(冗余,仅解决硬件不可用时,服务正常提供)、软件故障(bug)、自然灾害、黑客攻击、误操作(人为错误操作导致,出现几率最大)、...
测试;将生产的数据拷贝到测试环境中做测试,达到和生产环境一样的效果
备份会造成对系统的I/O压力,决定如何备份要权衡
备份时应该注意事项:
能容忍最多丢失多少数据;
恢复数据需要在多长时间内完成;
需要恢复哪些数据;决定了要备份哪些数据
做恢复演练:
测试备份的可用性;
增强恢复操作效率;
根据备份类型分类:
备份的数据集的范围:
完全备份和部分备份
完全备份:整个数据集;
部分备份:数据集的一部分,比如部分表;
全量备份、增量备份、差异备份:
完全备份:备份所有的数据
增量备份:仅备份自上一次完全备份或 增量备份以来变量的那部数据;
差异备份:仅备份自上一次完全备份以来变量的那部数据;差异是增量的另一表现形式。这样会导致占用更多的空间,但是好处是,恢复时间会比增量备份恢复来得快
可以根据需求来实现用哪种备份形式
如数据库异常时,先用全部恢复,再用增量恢复,最后再用二进制文件来重复对应时间段的恢复,完成完整的恢复。
物理备份、逻辑备份:
物理备份:复制数据文件进行的备份;不需要启动mysql服务,直接复制相关文件,效率更高。
逻辑备份:从数据库导出数据另存在一个或多个文件中;数据量较小的时候很常用。通过mysql语句进行备份
数据量大的时候,建议使用物理备份。
根据数据服务是否在线:
热备:读写操作均可进行的状态下所做的备份;最可行的方案。可能会导致数据的时间戳不一致,如备份过程,有些数据同时被更改了,导致数据时间戳不一样。所以热备技术复杂度很高,但是这个是必须要使用的。所以需要有技术来实现。myISAM不支持热备,innodb引擎支持热备。
注意,innodb可以做热备的原因有两个
1.lsn:日志序列号,每次日志增加时,这个数值就会被加1,会一直累加。做全量备份,就会使得lsn一直增加到最大值。
innodb使用表空间来存储数据,表空间内部有黑盒,可以理解为把表空间分成多个数据块,每一刻都是独立而自制的单位,会通过日志序列号(lsn)来记录,如果数据块的数据被修改,那么lsn就会增加,如第一块数据块被修改了,则加1,如lsn 为1,此时第二块数据块被修改,再加1,,此时lsn为2,之后lsn依次累加。备份是可以根据lsn的序列号进行恢复。
2.关键因素,innodb支持mvcc机制,为每个事务启用快照。因此读取到的数据都是启用事务那个时刻的数据。相当于是内部快照功能,通过快照可以访问到时间点同一的数据,所以innodb可以支持热备。
温备:可读但不可写状态下进行的备份;基本不可行,因为不能写入,很多功能不能实现
冷备:读写操作均不可进行的状态下所做的备份;最安全,但是基本不用。如果有数据库主从复制时,可以停掉主的,使用从的,这样就可以实现冷备。
备份需要考虑因素:
锁定资源多长时间?
备份过程的时长?
备份时的服务器负载?
恢复过程的时长?
备份策略:
全量+差异 + binlogs
全量+增量 + binlogs
备份手段:物理、逻辑
建议采用物理热备,因为物理备份性能好,效率高,热备不中断业务。
实现方法:
mysqldump+binlog
lvm2+cp/tar+binlog
xtrabackup(innodb)+binlog
备份什么?
数据
二进制日志、InnoDB的事务日志;
代码(存储过程、存储函数、触发器、事件调度器)
服务器的配置文件
备份工具:
mysqldump:mysql服务自带的备份工具;逻辑备份工具;
支持完全备份和部分备份;
InnoDB引擎中mysqldump支持热备;
MyISAM引擎中mysqldump支持温备;
cp/tar:复制后归档
借助lvm2的快照(请求一个全局锁)功能进行备份,之后立即释放锁,达到几乎热备的效果(快照执行速度快,执行的时候不能被访问,所以叫几乎热备,中断时间短,但是lvm出现故障后数据恢复困难,但是lvm扩展起来方便);属于物理备份;
注意:不能仅备份数据文件;要同时备份事务日志;前提:要求数据文件和事务日志位于同一个逻辑卷;
xtrabackup:实现innobackup(innobackup是收费的,但是这个工具很好用)的功能的另一个工具,由Percona提供,开源工具,支持对InnoDB做热备,物理备份工具;
完全备份、部分备份;
完全备份、增量备份;
完全备份、差异备份;
mysqlhotcopy:实现几乎冷备,mysql自带
select:一般用于一张表中的一些行,用这个工具,其他情况不用
备份:SELECT cluase INTO OUTFILE 'FILENAME';
恢复:CREATE TABLE
导入:LOAD DATA
备份建议使用mysqldump 或者 xtrabackup这两个工具来实现。针对这这两个工具如何实现备份将通过例子进行介绍
xtrabackup:支持物理备份
全量+差异+binlog ,如每个月做全量,每天做差异,再用binlog做时间点备份
全量+增量+binlog
mysqldump:只支持全量,数量量小,如几十G的数据,可以用这个工具
全量+binlog
以上是关于数据库 之 数据备份和恢复概念的主要内容,如果未能解决你的问题,请参考以下文章
己亥清爽恢复系列之数据文件3篇:非核心数据文件物理损坏或丢失(无备份恢复)
MySQL数据库之——日志和数据库内容的备份与恢复(妈妈再也不用担心数据丢失了)