翻译自官方文档
7.1 备份和恢复类型
本章节描述的是各种类型备份的特性
物理(未经处理的) VS 逻辑备份
物理备份就是直接拷贝存储数据库内容的目录和文件。这种备份类型适合数据量巨大,更重要的是当发生问题的时候需要快速恢复。
逻辑备份保存了相当于逻辑数据库结构(CREATE DATABASE,CREATE TABLE声明)和内容(INSERT声明或者delimited-text files)。这种备份类型适合数据量小的,也许你还想编辑数据内容和表结构,或者在其他的机器结构重新创建数据。
物理备份包含以下特性:
- 该备份是拷贝数据库目录和文件。典型的就是拷贝全部或部分MySQL数据目录。
- 物理备份比逻辑备份快是因为他只执行拷贝操作没有转换操作。
- 备份文件比逻辑备份小。
- 因为备份速度和备份文件小对于备份频繁的重要的数据库是非常重要的,所以
MySQL Enterprise Backup 使用物理备份。 - 备份和恢复粒度范围是全部目录到一个单独文件。能不能提供表粒度取决于存储引擎。举个例子,InnoDB 每个表可以是一个独立的文件,也可以是多张表是一个文件,MyISAM 表唯一对应一些文件。
- 除了数据库,备份还可以包含相关的文件比如日志或者配置文件。
- 备份存储在内存中的表数据是棘手的因为数据没有存储在硬盘上。(MySQL Enterprise Backup 有一个特性是备份的时候可以从内存中获取数据)。
- 备份是便携的仅仅在其他机器和当前机器是相同的情况下。
- 备份只能在 MySQL 服务停止的时候运行。如果服务在运行,就要加合适的锁以保证服务不回改变数据库数据在备份过程中。MySQL Enterprise Backup 在备份过程中自动地给表加锁。
- 物理备份工具包括MySQL Enterprise Backup 的适合 InnoDB 或者其他表的
mysqlbackup,文件系统级别的命令(比如 cp,scp,tar,rsync)适用于 MyISAM 表。 - 关于恢复
- MySQL Enterprise Backup 可以恢复 InnoDB 和其他表。
- ndb_restore 恢复 NDB 表。
- 使用文件系统命令拷贝文件到他的原始位置。
逻辑备份包含以下特性:
- 备份通过查询 MySQL 服务获取数据库结构和内容。
- 备份比物理备份慢,因为服务必须获取数据库信息并转换格式为逻辑格式。如果输出文件存储在客户端,服务必须发送文件到备份程序。
- 备份文件比物理备份文件大,特别是保存为文本格式。
- 备份和恢复粒度可以为服务器级别(所有数据库),数据库级别(某个数据库中的所有表),或者表级别。这是确定的无论使用什么存储引擎。
- 备份不包含日志和配置文件,也不包含和数据库相关的不是数据组成的文件。
- 备份以逻辑格式存储不依赖机器并且很便携。
- 逻辑备份需要 MySQL 服务器运行,服务器不能是离线状态。
- 逻辑备份工具包括 mysqldump 程序和 SELECT ... INTO OUTFILE 声明。这些对任何存储引擎都生效,包括 MEMERY。
- 恢复逻辑备份,格式化的 SQL 转存文件可以用 mysql 客户端处理。加载分隔符文本的文件,使用 LOAD DATA INFILE 声明或者 mysqlimport 客户端。
在线 VS 离线备份
在线备份发生在 MySQL 服务器运行的情况下,所以数据库信息可以从服务器获得。离线备份发生在服务器停止的情况下。这种区别可以描述为“热” vs “冷”备份;“温”备份是指服务器在运行但是已经上锁阻止修改数据当你从外部获取数据库文件。
在线备份包含以下特性:
- 备份很少打扰其他客户端,其他客户端可以连接 MySQL 服务器在备份期间,也可能访问数据取决于他们想要执行的操作。
- 一定要注意强制使用合适的锁,达到数据修改不会影响备份完整性。MySQL Enterprise Backup 自动的使用这种锁。
离线备份包含以下特性:
- 客户端收到不利的影响因为服务器在备份期间是不可用的。因此,这种备份通常使用在从服务器上不会影响服务。
- 备份很简单,因为不会通过客户端来备份。
在线和离线恢复有同样的差别和特性。但是,在线恢复影响比在线备份影响大,因为恢复需要更强的锁。备份期间,客户端也许可以读取数据一直到备份完成。恢复修改数据而不只是读它,所以客户端不能读取数据直到恢复完成。
本地 VS 远程备份
本地备份运行在和 MySQL 服务器同样的主机上,远程备份在不同的主机上。有些备份,备份可以从远程主机发起即使输出文件存储在服务器主机本地。
- mysqldump 可以连接本地或远程服务器。对于 SQL 输出文件(CREATE 和 INSERT 声明),本地或远程转存可以在客户端完成并且生成输出文件。对于分割文本格式的输出文件(使用 --tab 选项),数据文件在服务器主机。
- SELECT ... INTO OUTFILE 可以从本地或远程客户端主机发起,但是输出文件在服务器主机上创建。
- 物理备份一般从 MySQL 服务器主机上发起以便服务可以离线,尽管拷贝到的目的地可以是远程的。
快照备份
有些文件系统实现使得“快照”可以取得。这提供了文件系统一个时间点的逻辑拷贝,不需要获取整个文件系统的物理拷贝。(举个例子,实现可能使用了写时复制技术以致文件系统的部分修改在快照时间之后。)MySQL 本身不提供这种获取文件系统快照的能力。他一般是通过第三方解决方案,比如 Veritas,LVM,或者 ZFS。
全量 VS 增量备份
全量备份包含 MySQL 服务在一个时间点管理的所有数据。增量备份可以认为是在一个时间段(从一个时间点到另一个)对数据的修改。MySQL 有不同的方式执行全量备份,像之前章节描述的。增量备份是通过开启服务器二进制日志实现的,就是服务用来记录数据修改的。
全量 VS 时间点(增量)恢复
全量恢复从全量备份恢复所有数据。这个恢复吧服务实例恢复到备份时的状态。如果状态不是足够的当前,全量恢复之后可以使用增量备份使服务器达到最新的状态。
增量恢复是恢复的一个时间段的修改。这个也叫时间点恢复因为他是服务器当前状态到达了指定的时间。时间点备份是基于二进制日志并且通常伴随着全量备份以达到恢复的目的。然后数据修改记录到了二进制日志,实用他做增量恢复去重写数据修改并把服务弄到期望的时间点。
表维护
数据完整性可以妥协当表发生错误的时候。对于 InnoDB,这不是一个常见的问题。关于检查 MyISAM 表和修复当问题发生的时候,看这个章节。
备份时间安排,压缩,加密
备份时间安排对于自动备份来说是重要的。使用压缩降低了输出文件的空间占用,使用加密更好的保护的数据完全防止未被授权的访问。MySQL 本身没有提供这些能力。MySQL Enterprise Backup 可以压缩 InnoDB 备份,备份输出文件压缩或者安全可以使用文件系统工具完成。其他第三方解决方案也可以。