差异备份原理介绍:
差异备份基于差异备份所包含数据的前一次最新完整备份。差异备份仅捕获自该次完整备份后发生更改的数据。这称为差异备份的“基准”**。差异备份仅包括建立差异基准后更改的数据
注意: 在还原差异备份之前,必须先还原其基准备份
每种主要的文件备份类型都可用作一系列差异备份的基准,例如:
- 差异数据库备份
- 部分差异备份
- 差异文件备份
作为一种最佳做法,差异备份的范围应与其基准的范围相同。因此,差异文件备份应基于包括同一组文件和(或)文件组的文件备份
进行差异备份时通常不需要考虑特殊事项。但注意以下情况:
- 对某个只读数据库进行差异备份。对于只读数据库,单独使用完整备份比同时使用完整备份和差异备份更容易管理。有关详细信息,请参阅备份只读数据库。
- 完整备份和文件备份混在一起,这创建了多基准差异备份。
- 您可以创建一个多基准差异备份,其范围将大于单基准备份。但是,多基准差异备份的还原较为复杂,除专家级用户之外,通常应避免使用这种方式。有关详细信息,请参阅使用多基准差异备份。
- 需要在更改文件组的 IsReadOnly 属性之后执行部分差异备份
1. 差异备份的大小取决于自建立差异基准后更改的数据量。通常,差异基准越旧,新的差异备份就越大。特定的差异备份将在创建备份时捕获已更改的区的状态。如果创建一系列差异备份,则频繁更新的区可能在每个差异中包含不同的数据。当差异备份的大小增大时,还原差异备份会显著延长还原数据库所需的时间。因此,建议按设定的间隔执行新的完整备份,以便为数据建立新的差异基准。例如,您可以每周执行一次整个数据库的完整备份(即完整数据库备份),然后在该周内执行一系列常规的差异数据库备份
2. 在建立基准之后立即执行的差异备份通常明显小于差异基准。这可以节省存储空间和备份时间。但是,当数据库随着时间的推移发生更改时,数据库与特定差异基准之间的差异将增大。差异备份与其基准间隔的时间越长,差异备份可能就越大。这意味着差异备份的大小最终会接近差异基准的大小。较大的差异备份将失去备份更快、更小的优势
3. 在还原过程中,还原差异备份之前,必须先还原其基准。然后只需还原最新的差异备份,即可将数据库前滚到创建差异备份的时间。通常,应该先还原最新的完整备份,然后再还原基于该完整备份的最新差异备份
实例:
//开启mysql二进制日志功能
[root@wbk ~]# vim /etc/my.cnf
[mysqld]
basedir = /usr/local/mysql
datadir = /opt/data
socket = /tmp/mysql.sock
port = 3306
pid-file = /opt/data/mysql.pid
user = mysql
skip-name-resolve
server-id = 1
log-bin = mysql_bin
[root@wbk ~]# service mysqld restart
Shutting down MySQL.... SUCCESS!
Starting MySQL.. SUCCESS!
//对数据库进行全量备份
[root@wbk ~]# mysqldump -uroot -p'wangbokang!!' /etc/my.cnf /opt/data/ --single-transaction --flush-logs --maste