数据备份的时候必须保证备份的数据和原数据的一致性,否则备份的数据将不能使用
数据备份的类型:
从备份的逻辑来说:
逻辑备份(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引擎,物理备份,速度比较快
转载于:https://blog.51cto.com/aceruser/663956