MySQL数据库备份恢复基础
MySQL常见的故障类型
对于用户来说,数据库中保存的数据通常至关重要,所以要采取各种手段来防止各种可能的数据损失和数据故障。
DBA主要任务就是维持数据库的高可靠性运行,尽量提高数据库的连续可用时间,降低数据库的平均恢复时间,最小化故障时的数据损失及业务影响。
在数据库环境中,常见故障类型:
语句失败,用户进程失败,用户错误
实例失败,介质故障,网络故障
其中最为严重的故障主要是用户错误和介质故障。
数据库管理员(DBA)的目标是确保数据库处于可用状态,从而当用户需要时可提供使用。要实现这个目标,DBA需要做的事:
1.预计导致出现故障的常见原因并努力避免出现这些原因
2.努力提高平均故障间隔时间(MTBF),确保硬件尽量可靠,也就是通过冗余方式保护关键组件,定期执行操作系统维护,如主从,集群,容灾
3.减少平均恢复时间(MTTR),提前确定恢复过程方案并配置备份,以便在需要时随时可用。
4.最大程度地减少丟失数据。
DBA可按照接受的最佳方案配置数据库,以便永远不丢失提交的事务处理。
故障类别-可分为以下几类:
◆语句错误:单个数据库操作(选择、插入、更新或删除)失败,软件逻辑问题。
◆用户进程错误:单个数据库会话失败,一般不需要干预,分析日志观察。
◆网络故障:与数据库的连接断开,如:网卡坏,网络配置问题。
◆用户错误用:户成功完成操作但是操作不正确(删了表,或输入错误数据)
◆实例错误:实例意外关闭,看 error日志。
◆介质故障:丢失了—个或多个数据库文件(OS、文件系统、硬盘、存储、主机)。
MySQL备份的重要性
在MySQL数据库维护中,备份与恢复是重中之重的问题,虽然有很多时候数据库系统运行比较慢,但是对数据库的数据丟失来说,显然数据丢失的损失是最大的,也是一个企业的生命价值所在。
对关键业务数据进行持续定期的备份是恢复策略中的一个重要部分。
如果你只把它作为事后弥补,或者每年审计表中的应付,那么丢失关键数据的风险就会明显增加。
因此,制定一套严格遵循规范的数据保护规则就显得十分重要,这套规则应由一系列清晰的备份策略所定义,I和相关业务人员可以紧密地跟踪监控。
通常来讲,备份策略中一般包含磁盘或磁带上初始数据的全备份,配合之后毎天的增量或差异备份。
无论采取哪种方式,至少要保持两份备份拷贝,一份用于在线恢复,另一份则保留在离线环境中。
这样,如果数据中心发生洪水、火灾或其它灾害事故,离线拷贝可用作恢复的最后手段。
什么情况下会用到备份呢?
1)灾难恢复
2)用于单位审计:数据库在过去某一个时间点是什么样的。
3)跨机房的灾备,需要备份数据到远端程序。
4)人为的DDI或者是DML的语句,导致主从库的数据消失
5)用于业务测试。
根据服务器状态来分,可将其分为冷备份、温备份和热备份三大类
冷备份(离线备份;读、写操作均中止)
备份系统未安装或未配置成与当前使用的系统相同或相似的运行环境,应用系统数据没有及时装入备份系统。一旦发生灾难,需安装配置所需的运行环境,用数据备份介质(磁带或光盘)恢复应用数据,手工逐步或自动批量追补孤立数据,将终端用户通过通讯线路切换到备份系统,恢复业务运行。
优点:设备投资较少,节省费用,对环境要求不高。
缺点:恢复时间较长,一般要数天至1周,数据完整性与一致性较差。
温备份(仅可以执行读操作)
将备份系统已安装配置成与当前使用的系统相同或相似的系统和网络运行环境,安装了应用系统业务定期备份数据。一旦发生灾难,直接使用定期备份数据,手工逐步或自动批量追补孤立数据或将终端用户通过通讯线路切换到备份系统,恢复业务运行。
优点:设备投资较少,对环境要求不高。
缺点:恢复时间长,一般要十几个小时至数天,数据完整性与一致性较差。
热备份(读、写不受影响)
备份处于联机状态,当前应用系统通过高速通信线路将数据实时传送到备份系统,保持备份系统与当前应用系统数据的同步;也可定时在备份系统上恢复应用系统的数据。一旦发生灾难,不用追补或只需追补很少的孤立数据,备份系统可快速接替生产系统运行,恢复营业。
优点∶恢复时间短,一般几十分钟到数小时,数据完整性与一致性最好,数据丢失可能性最小。
缺点:设备投资大,费用高,对环境要求高,平时运行管理较复杂。
总结:
冷备份服务器( cold server)是在主服务器丢失的情况下才使用的备份服务器。冷备份服务器基本上只在软件安装和配置的情况下打开,然后关闭直到需要时再打开。
温备份服务器( Warm server)一般都是周期性开机,根据主服务器内容进行更新,然后关机。经常用温备份服务器来进行复制和镜像操作
热备份服务器( hot server)时刻处于开机状态,同主机保持同步。当主机失灵时,可以随时启用热备份服务器来代替。
MySQL备份的分类
按照备份后产生的副本文件是否可以编辑,可分为逻辑备份、物理备份。
1、物理备份:
物理备份产生的数据副本都是二进制文件,常常不可编辑,例如数据库的二进制日志。
备份特点:
1)由数据库文件和目录组成,是mysql数据目录的全部或者部分
2)一般备份比逻辑备份快,因为纯属是文件复制,不用像逻辑备份那样,需要做sql的转换;
3)备份的粒度比逻辑备份小,因为是全文件复制了,当然比sql要精确一些;
4)物理备份的文件可以不仅是数据库,还可以是数据库的日志,配置文件;
物理备份(复制数据文件):
物理备份就是把 MYSQL存储好的所有文件保存下来。比如创建一个数据库db之后,mysql会在 datadir/目录下面创建一个db的目录,那么这个目录下面的
所有文件保存下来,就是物理备份。
适用:
物理备份适用于大数据量的备份,比如你有百G级、TB级的数据,那你就适合使用物理备份;
备份方法
1.文件系统命令:cp,scp, tar, rsync;
2.MySQL是关备份软件;系统快照 snapshot;
逻辑备份(将数据导出至文本文件中):
逻辑备份就是把数据库的结构定义语句,数据内容的插入语句,全部存储下来。然后恢复的时候,在另一个mysql服务器执行这些语句,就可以创建另一个与之前一样的数据库了。备份后,数据库管理员通常可以直接査看和编辑副本文件中的内容。
适用:这种比较适合数据量少的数据库。
备份方法:
1.如,使用 mysqldump等程序可以把对远程/本地数据库进行逻辑备份
2.SELECT… INTO OUTFILE可以把数据进行逻辑备份,但备份文件只能存储在 mysql- server的机器上;
逻辑备份特点
1)逻辑备份通过查询数据库的信息进行备份;
2)速度比较慢。因为获取了信息,然后组装成sql语句,如果调用命令是远程,还要把sql语句远程传输
3)备份文件要比物理备份小;
4)备份粒度只能到表
5)没有日志或者配置文件;
6)备份文件是sql语句,逻辑语句,相对来说,可移植性要好。比如我在inux备份了,可以在 windows进行恢复,物理备份就不行;
从数据收集来分,将数据备份分为完全备份、增量备份、差异备份。
1、完全备份:
完全备份是一个完整的数据备份,仅仅依靠该副本文件就可以将数据库恢复到某个正确的状态。如果不借助热备份工具,完全备份可能需要停止MySQL服务。此时MySQL将无法提供服务,在真实的业务场景中,很少真正使用完全备份。
恢复:全备即可
2、增量备份
增量备份是指在完全备份的基础上,对更新的数据进行备份,恢复时需要借助完全备份产生的副本文件。目前,MySQL还没有提供真正的增量备份工具,非常菜。
简单直接:仅备份自上一次完全备份或增量备份以来变化的那些数据;
恢复:恢复周五:全备+周一+周二+周三+周四+周五
3、差异增量:
仅备份自上一次完全备份以来变量的那部数据。
恢复:如果至周五,全备+周五的日志。
MySQL备份都备份什么?
MySQL-般备份以下几个部分:
1.数据文件
2.日志文件(比如事务日志,二进制日志)
3.存储过程,存储函数,触发器
4.配置文件(十分重要,各个配置文件都要备份)
5.用于实现数据库备份的脚本
MySQL备份工具简介
1) MySQLdump(单线程)/mysqlpump(多线程)
mysql服务带的备份工具,是一种逻辑备份工具,它支持以下方式备份:
完全、部分备份;
InnoDB:热备;
MyISAM:温备
2) mydumper 开源,是 mysqldump 的一个衍生,速度在两者之间。
3)cp/tar
lvm2:快照(请求一个全局锁),之后立即释放锁,达到几乎热备的效果;物理备份;
注意:不能仅备份数据文件;要同时备份事务日志;
前提:要求数据文件和事务日志位于同一个逻辑卷;
4) innobackup[收费] /Xtrabackup[免费]
由 Percona提供,开源工具,支持对 iNnodB做热备,物理备份工具;完全备份、部分备份;完全备份、增量备份;完全备份、差异备份;
5) mysqlhotcopy物理备份工具,但只支持 MyISAM引擎,基本上属于冷备的范畴,物理备份,速度比较快。
6)主从复制
7)官方 mysql enterprise backup备份软件,收费。
8)NBU等第三方备份厂家。
企业场景全量和增量的使用方法是怎样做的呢?
1)中小公司,全量一般是每天一次,业务流量低谷执行的是全备,备份时会锁表。
2)单台数据库,如果增量。使用 rsync(配合定时任务频率大点或者 inotify,主从复制),把所有的 binlog备份到远程服务器,尽量做主从复制。
3)大公司,周备,每周六00点一次全量,下周日-下周六00点前都是增量。
优点:节省备份时间,减小备份压力。缺点:增量的 binlog文件副本太多,还原会很麻烦
4)一主多从,会有一个从库做备份,延迟同步。
MySQL备份策略
备份策略是一项事先定义的明确的时间表,确保在遇到意外删除、错误信息覆盖或其它形式存储中断时数据仍可恢复。
这类策略通常对环境中的大部分服务器会有默认的保护方案,并对一些关键业务应用或数据制定额外的策略。
比如,对于所有业务应用数据的默以备份策略可能是在周-到周五,毎晩备份到磁带,一套磁带会放在本地用于快速的本地恢复,而另一套副本数据则会放在安全的外地
MySQL如何制定合适的备份策略保证高效备份
备份就像是天气一样常常作为话题被人提起——“人人都在讨论备份问题”,但和天气不一样的是,天气是我们无力改变的,是晴是雨我们只能看老天爷的心情如何了,但备份上面的很多问题是可以通过备份管理员的努力来解决的。
备份策略对于企业来说比较复杂,企业在确定备份策略的时候需要考虑:
一、备份周期:指的是两次备份之间的时间间隔。
二、备份方式:设置备份周期的同时需要考虑的问题包括采用何种备份方式。
三、自动/手动备份
四、备份介质
五、保证良好的一致性
六、备份成本:如费用、时间、性能开销
七、恢复成本:如费用、时间、所能够容忍丟失的数据量
MySQL一般情况下有几种策略。
策略一:
直接拷贝数据库文件(文件系统备份工具c)(适合小型数据库,是最可靠的)
策略二
mysqldump备份数据库(完全备份+增加备份,速度相对较慢,适合中小型数据库)(MyISAM是温备份, InnoDB是热备份)
策略三:
Xtrabackup && lvs 快照从物理角度实现几乎热备的完全备份,配合二进制日志备份实现增量备份,速度快适合比较烦忙的数据库
MySQL数据灾难恢复的情况
1、系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏的备份文件情况下得恢复,或者数据有丢失, binlog丢失恢复。
2、误 delete数据恢复、误删除表恢复(drop)、 truncate表恢复等。以及 myd/rm文件, ibd ibdata1文件变成0字节。
3、各种MySql错误的修复:如mysql无法启动,事务死锁, ibdata1文件无法启动等等
4、MySq数据库中数据文件 Kibata1和ibd出现坏块情况下的恢复。
5、MySql数据文件被误删除情况下的恢复。被覆盖的情况或者被老备份还原的恢复。
6、磁盘阵列上崩溃导致的mysql数据库无法恢复或者严重损坏的修复。
7、ibdata1文件丢失或被覆盖,IBD表文件丢失以及被覆盖的情况。
MySQL数据恢复的核心思想
1)流程制度的控制。
2)尽量不破坏原有环境。
3)业务需求的容忍度,可量化的目标,根据需求选择停库或锁表或者容忍丢失部分数据。
MySQL备份恢复的验证
备份文件有了之后还需要对其定期的进行恢复测试,不然可能是白忙一场。因为很多情况下,有些备份文件可能已经损坏。当我们遇到数据丢失故障时,在紧急关头,竟然发现备份的文件无法恢复或者数据致性和完整性没有达到要求,如果我们定期的对备份文件进行恢复测试,这种悲剧可能就不会发生。
1、恢复时间及地点
每周进行次恢复测试,主要在测试机上进行
2、恢复方式
模拟某个时间点主机数据全部丢失,要求恢复到丢失时间点的所有数据,先进行全备恢复,然后根据 binlog恢复到最近时间点。
作为一名DBA,干万不要忽视数据备份和恢复测试的重要性。