MySQL备份概述
1、关于备份你要知道的
思考:备份和冗余有什么区别?
备份: 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。
冗余: 数据有多份冗余,但不等备份,只能防止机械故障带来的数据丢失,例如主备模式、数据库集群。

2、备份什么
数据库:一堆物理文件的集合;日志文件(二进制日志)+数据文件+配置文件
DBFILE BINLOG my.cnf

3、备份过程须考虑的因素

  • 必须制定详细的备份计划(策略)(备份频率、时间点、周期)
  • 备份数据应该放在非数据库本地,并建议有多份副本
  • 必须做好==数据恢复的演练==(每隔一段时间,对备份的数据在测试环境中进行模拟恢复,保证当出现数据灾难的时候能够及时恢复数据。)
  • 根据数据应用的场合、特点选择正确的备份工具。
  • 数据的一致性
  • 服务的可用性

4、备份类型
㈠ 逻辑备份

  • 备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL)。
  • 适用于中小型数据库,效率相对较低。 一般在数据库正常提供服务的前提下进行,如:mysqldump、mydumper、into outfile(表的导出导入)等。

㈡ 物理备份

  • 直接复制数据库文件
  • 适用于大型数据库环境,不受存储引擎的限制,但不能恢复到不同的MySQL版本。
  • 一般是在数据库彻底关闭或者不能完成正常提供服务的前提下进行的备份);如:tar、cp、xtrabackup(数据库可以正常提供服务)、lvm snapshot、rsync等

㈢ 在线热备(冗余)

  • MySQL的replication架构,如M-S|M-S-S|M-M-S等
  • 实时在线备份

5、备份工具

㈠ 社区版安装包中的备份工具

① mysqldump(逻辑备份,只能全量备份)
  1. 1)企业版和社区版都包含<br /> 2)本质上使用SQL语句描述数据库及数据并导出<br /> 3)在MYISAM引擎上锁表,Innodb引擎上锁行<br /> 4)数据量很大时不推荐使用

② mysqlhotcopy(物理备份工具)
  1. 1)企业版和社区版都包含<br /> 2perl写的一个脚本,本质上是使用锁表语句后再拷贝数据<br /> 3)只支持MYISAM数据引擎

㈡ 企业版安装包中的备份工具

mysqlbackup
1)在线备份
2)增量备份
3)部分备份
4)在某个特定时间的一致性状态的备份

㈢ 第三方备份工具

① XtraBackup和innobackupex(物理备份)
  1. 1Xtrabackup是一个对**InnoDB**做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具**InnoDB Hotbackup**的一个很好的替代品。<br /> 2Xtrabackup有两个主要的工具:xtrabackupinnobackupex<br /> axtrabackup只能备份InnoDBXtraDB两种数据表,不能备份myisam类型的表。<br /> binnobackupex是将Xtrabackup进行封装的perl脚本,所以能同时备份处理innodbmyisam的存储引擎,但在处理myisam时需要加一个读锁。

② mydumper(逻辑备份,备份SQL语句)

多线程备份工具

https://launchpad.net/mydumper/mydumper-0.9.1.tar.gz 2015-11-06(最后更新时间)

6、备份方法

  • 完全备份(全备)
  • 增量备份(增量备份基于全量备份)