前言:
数据备份的重要性:
- 提高系统的高可用性和灾难可恢复性;(在数据库系统崩溃的时候,没有数据库备份怎么办!)
- 使用数据库备份还原数据库是数据库系统崩溃时提供数据恢复最小代价的最优方案;(总不能让客户重新填报数据吧!)
- 没有数据就没有一切,数据库备份就是一种防范灾难于未然的强力手段;
- 对于DBA来说,最首要也是最重要的任务就是数据库备份。
一、 数据库备份的方式和分类:
按照数据库备份对数据库的使用影响来划分:
- 在线备份(即联机备份或热备份)
- 离线备份(即脱机备份或冷备份)
说明:在线备份和离线备份最大的不同在于:在线备份数据库时,数据库仍然可以供用户使用,而离线备份数据库则不行。离线备份数据库时,必须断开所有与数据库有连接的应用后才能进行。
按照数据库的备份范围:
- 全量备份
- 增量备份
说明:完全备份数据库是指备份数据库中的所有数据,而增量备份只是备份数据库中的部分数据。
二、离线备份和还原
离线备份:
(1) 连接到要备份的数据库
db2inst1@chuhoqi-virtual-machine:~$ db2 connect to orderdb
(2)显示数据库应用状态
db2inst1@chuhoqi-virtual-machine:~$ db2 list applications
(3)停掉数据库所有的应用
db2inst1@chuhoqi-virtual-machine:~$ db2 force applications all
(4)对数据库进行离线状态下的备份
db2inst1@chuhoqi-virtual-machine:~$ db2 backup database orderdb to /home/db2inst1/backup/
注意:指定的备份文件的输出目录必须是已创建的,否则会报错
(5)查看备份历史记录
db2inst1@chuhoqi-virtual-machine:~$ db2 list history backup all for orderdb
离线还原:
(1)停掉数据库应用
db2inst1@chuhoqi-virtual-machine:~$ db2 force applications all
(2)恢复某个时间点的数据
db2inst1@chuhoqi-virtual-machine:~$ db2 restore database orderdb from /home/db2inst1/backup/ taken at 20180615005442
三、在线备份
注意:如果要做在线的备份,要对两个参数作修改:USEREXIT和LOGRETAIN,将其修改为on,默认是off的,默认使用日志模式,修改完参数后,可以变为归档日志模式,启用了userexit做数据库日志的归档
(1) 设置userexit、logretain参数的状态为on
db2inst1@chuhoqi-virtual-machine:~$ db2 update db cfg for orderdb using userexit on
db2inst1@chuhoqi-virtual-machine:~$ db2 update db cfg for orderdb using logretain on
(2) 连接需要备份的数据库(注意)
注意:此时由于数据库处于backup pending状态,所以必须做一次离线的全备才可以进行数据库连接。
(3)对数据库进行在线状态下的备份
db2inst1@chuhoqi-virtual-machine:~$ db2 backup database orderdb online to /home/db2inst1/backup
四、增量备份
要指定是否对数据库启用增量备份,需要使用 TRACKMOD
配置参数。这个参数指定数据库管理器是否跟踪数据库修改,以让备份工具能够检测到应该对数据库的哪些部分进行增量备份,并将其包含到备份映像中。
TRACKMOD
配置参数可以使用以下值之一:
-
NO
— 禁用增量备份。不跟踪或记录数据库页更新。这是默认值。 -
YES
— 启用增量备份。当启用了更新跟踪之后,首次成功连接到数据库之后更改将变得有效。注意,在增量备份对特定表空间执行备份之前,必须对该表空间进行一个完整的备份(下面的例子提供详细 解析)。
下面的例子显示了如何为 SAMPLE 启用增量备份:
DB2 UPDATE DATABASE CONFIGURATION FOR DATABASE_NAME USING TRACKMOD YES
在将 TRACKMOD
设置为 YES
之后,您必须在允许应用程序更改数据之前备份数据库。换句话说,您必须对数据库进行完整的备份,从而为执行增量备份提供一个基准点。此外,如果您随后在数据库中创建了一个新的表空间,那么必须进行包含该表空间的备份。这可以是数据库备份或表空间备份。在备份之后,增量备份就可以包含新的表空间。
(1)修改trackmod参数为yes状态
db2inst1@chuhoqi-virtual-machine:~$ db2 update db cfg for ncc using trackmod yes
(2)离线增量备份
# 在进行增量备份前必须要执行一次全量的离线备份
db2inst1@chuhoqi-virtual-machine:~$ db2 backup database orderdb to /home/db2inst1/backup/
# 离线增量备份
db2inst1@chuhoqi-virtual-machine:~$ db2 backup database orderdb incremental to /home/db2inst1/backup/
(3)在线增量备份
db2inst1@chuhoqi-virtual-machine:~$ db2 backup database orderdb online incremental to /home/db2inst1/backup/
五、恢复(还原)
(1)查看备份历史记录
db2inst1@chuhoqi-virtual-machine:~$ db2 list history backup all for orderdb
(2)停掉数据库应用
db2inst1@chuhoqi-virtual-machine:~$ db2 force applications all
(3)恢复某个时间点的数据
db2inst1@chuhoqi-virtual-machine:~$ db2 restore database orderdb incremental automatic from /home/db2inst1/backup/ taken at 20180615173814