数据备份的时候必须保证备份的数据和原数据的一致性,否则备份的数据将不能使用

数据备份的类型:

从备份的逻辑来说:

       逻辑备份(logical export):备份的是数据库的逻辑结构,大多数备份的是SQL语句,并不是数据本身,逻辑备份的粒度很小,能够备份表中的行,保存的结果为纯文本文件,具有很强的兼容性,备份和还原的时候不依赖存储引擎的种类,
        缺点:
              RDBSM会对主机产生压力
              备份的文件比原来的文件大(最好在备份之后进行压缩)
              可能丢失浮点数的精度信息

      物理备份:也叫裸备份,备份数据库的数据文件本身,最小粒度只能到表

              备份速度的快慢和存储引擎的类型的关系:

                    对于非事务引擎来说,逻辑备份比物理备份速度快
                    对于innodb等事务引擎来说,物理备份比逻辑备份快

从备份的数据集来说:

        完全备份:对数据库中所有的内容全部进行备份,也就是全库备份
        增量备份:只备份从上次的完全备份和增量备份以来改变的数据
        差异备份:只备份从上次完全备份以来改变的数据

        一般情况下使用两种备份方法的结合,如:完全+差异,完全+增量

       从数据恢复的角度来看,使用完全和差异结合的备份方法是最安全的

从备份时服务器是否需要停机来说:

(1)冷备(cold):干净的关闭服务之后才进行备份

(2)温备(warm):数据库服务在线,但用户只能读取数据不能写入数据

(3)热备(hot):服务在线,不影响用户读写数据,但是不支持事务的引擎是不能完整支持热备的,通过使用LVM来备份,也仅仅能够几乎达到热备的效果。对于innodb等事务存储引擎可以使用LVM来实现热备,也可以通过官方提供的热备工具来轻松实现

 

说完了备份的理论,我们就来看看常用的mysql数据备份工具有哪些,以及他们的利与弊:

(1)mysqldump

          用来实现逻辑备份,适合所有的类型的存储引擎,除对innodb等事务存储引擎之外都只能实现温备,要对innodb等事务存储引擎实现热备需要其他的工具备份来辅助,备份速度为中速,还原速度非常慢,但还原的时候能对还原控制的弹性比较大

(2)SELECT INTO OUTFILE
         通过mysql的SQL语句来备份,只能实现温备,不能区别引擎的类型,备份速度慢,恢复速度也很慢

(3)mk-parallel-backup
          这个工具并不是系统自带的,需要进行安装,能够在多颗cpu的mysql主机上实现并行备份,备份速度中等,恢复速度中等

(4)ibbackup
          能够对innodb等事务存储引擎实现热备,但这需要官方授权,授权费大概为每个主机5000美元

(5)filesystem 
          备份和恢复速度很快,跨平台能力很有限,只能实现冷备

(6)snapshot 
          基于快照的物理备份,能够实现接近热备,速度比较快,需先对备份的内容添加读锁,创建完快照之后立刻解除读锁,整个过程只影响数据库几秒钟的时间,所以说是几乎接近热备,实现基于快照的备份文件系统主要有两种LVM、ZFS
          LVM不支持对多个卷进行性同时间做快照,所以想要使用快照进行备份数据的话,在架设mysql服务的时候就要将数据文件和事务日志放在同一个逻辑卷中,并且在备份使用Innodb存储引擎时要确保下列选项处于向对应的状态
         SHOW VARIABLES LIKE ‘log_bin’ ON 
         SHOW VARIABLES LIKE ‘sync_binlog’ =1 SET GLOBAL sync_linlog=1
         SHOW VARIABLES LIKE ‘innodb_support_xa’ ON 事物日志的刷写 
          ZFS能够同时对多个逻辑卷进行备份,所以不必将需要备份的东西放在同一个逻辑卷上,功能更加强大,现在linux已经完全能够支持ZFS了。

(7)mysqlhotcopy: 几乎是冷备,只能用myisam引擎,物理备份,速度比较快