mysql 常见的备份架构及技术

在mysql中,备份是相当重要的一步,设想,万一哪天线上服务器出现故障导致数据丢失,而在此之前并未做好相关的备份工作,那么后果将不可设想。接下来将简单介绍下Mysql常见的备份系统架构。

(1)一主多从

164243953.jpg

这种架构的特点很明显,架构中有多台mysql服务器,并由其中一台作为主服务器(master),其他服务器都作为从服务器(slave)。所有slave都连到master上面,并且做主从复制,从master上拿二进制日志到本地执行即可得到master上完整的一份数据,从而做到备份的效果。一旦master数据丢失,可以通过slave服务器的协助来恢复工作。但这种架构有一个缺点,一般情况下,master是处理写请求,而slave则分摊读请求,这意味着master实际上压力还是比较大的,如果每台slave还都从它上面拉二进制日志文件,则会进一步加大master的压力。因此就有下面一个架构出现:


(2)链式复制

165921544.jpg

这种架构便可以较好的解决上述提到的问题。它跟上一个架构还是挺相似的,首先master仍然是负责处理写请求,slave处理读请求,但是第二台slave不再连接到master上,而是连接到前一台slave上,进行复制的时候,slave1还是从master上拉二进制日志文件并做好相关备份工作,而第二台slave开始都是从上一台slave上拉取二进制日志文件,这样就减轻了master的负担。


(3)快照

170405838.jpg

这个架构跟上述两个架构就较为不同了,它的实现是将mysql的服务器连接到存储上,毫无疑问,数据库的数据将保存在存储1上面,而存储2不连接Mysql服务器,连接存储1。通过在存储1上定期对数据做个快照,并定期将这份快照传给存储2,由存储2做备份工作。这有点像我们拍照,在某一时间拍一张照片,以后想知道当时长什么样子,就可以拿出照片看了。数据恢复也是通过快照来恢复。


(4)双主模式(主-主)

101104999.jpg

这种模式下,是由两台mysql主机同时作为主服务器工作,并且两台都是主动模式。也就是说,两台服务器都会接受写请求。一般情况下不推荐使用这种模式,因为同时对两台服务器进行写操作,容易造成数据的紊乱。


(5)双主模式(主-被)

101104999.jpg

这个架构的模式和上面的是一致的,只是这里两台不是都处于主动模式,而是一主一被,也就是说只有一台服务器负责处理写操作,而另外一台服务器则分摊读的压力。实际环境中,这种架构用的较多。


(6)mysqlhotcopy(MyISAM)

这是mysql的一种在线复制技术。一般情况下,若要对mysql做备份则需要安排停机再做备份,而mysqlhotcopy这种技术是支持在不掉电的情况下对数据库数据进行备份的,其原理是,它将等待数据库的操作完成,然后将相关物理文件拷贝到备用机器上,从而达到备份的目的。当然了,这种技术并不是十分成熟,更不能与oracle的热备媲美,只适用于一些对数据精准性要求小的场合。


以上便是mysql中常见的备份架构及技术,当然,实际环境中往往还需要借助其他软件,从而更好的工作,例如heartbeat、keepalived以及lvs 等高可用部件来实现负载均衡等。数据库的备份固然重要,但更重要的是能否在事故发生的第一时间将数据恢复,因此并非单单做好数据的备份即可,而是还要看看恢复的效果如何。


(7)xtrabackup(InnoDB)

Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDBHotbackup的一个很好的替代品。

(1)备份过程快速、可靠;

(2)备份过程不会打断正在执行的事务;

(3)能够基于压缩等功能节约磁盘空间和流量;

(4)自动实现备份检验;

(5)还原速度快;


Xtrabackup有两个主要的工具:xtrabackup、innobackupex


  1、xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表

  2、innobackupex是参考了InnoDB Hotbackup的innoback脚本修改而来的。innobackupex是一个perl脚本封装,封装了xtrabackup。主要是为了方便的同时备份InnoDB和MyISAM引擎的表,但在处理myisam时需要加一个读锁。并且加入了一些使用的选项。如slave-info可以记录备份恢 复后,作为slave需要的一些信息,根据这些信息,可以很方便的利用备份来重做slave。


最新版本下载地址:http://www.percona.com/software/percona-xtrabackup


以上观点仅为个人所见,若有错漏,还请大家批评指正,同时也欢迎大家继续补充,谢谢!

你可能感兴趣的:(mysql)