db2数据库与表空间备份
数据库与表空间的备份语法概述
备份语法
database-alias:指定要备份的数据库的别名
username/using password:指定备份数据库所使用的用户和用户密码
DBPARTITIONNUM db-partition-number1:指定要备份的数据库分区的列表
DBPARTITIONNUMS db-partition-number1 TO db-partition-number2:指定备份数据库分区的范围
ALL DBPATITIONNUMS:备份所有的数据库分区
EXCEPT:要排除备份的数据库分区
TABLESPACE tablespace-name:指定要备份的表空间
ONLINE:指定对数据库进行在线的备份,默认是离线备份
INCREMENTAL:对数据库进行增量备份
DELTA:对数据库进行Delta备份
TSM:使用Tivoli Storage Manager 作为备份设备
OPEN SESSIONS:DB2与TSM或其他设备软件产品之间的IO会话数量(注意:与INCLUDE LOGS 参数的协同使用)
TO dir | dev:指定备份完成的数据文件所放置的路径或者设备
DEDUP_DEVICE:如果使用数据复制的功能,此参数会优化备份文件在存储设备中的存储格式
BUFFER buffer-size:DB2在备份过程中所占用的内存缓存大小,以4k为单位
PARALLELISM n:备份过程中,可以并发备份的表空间数量
COMPRESS | ENCRYPT:指定备份文件是使用压缩特征还是进行加密,两者不能同时使用
UTIL_IMPACT_PAIORITY priority:指定备份操作的优先级(可设置为1-100,1优先级最低,100优先级最高,默认是50)
EXCLUDE LOGS:指定备份过程中不备份日志文件(只针对在线备份有效)
WITHOUT PROMPTING:指定在备份过程中需不需要用户提供交互输入
备份文件的命名
备份类型
— 0:表示完整的数据库级别备份
— 3:表示表空间级别的备份
— 4:表示由LOAD COPY TO 命令生成的备份影像
数据库分区
在单一分区数据库环境中,分区号始终是DBPART000
在分区数据库环境中,是DBPARTxxx,其中 xxx 是db2nodes.cfg 文件中对数据库分区指定的编号
离线备份
切换到 db2instl(实例用户)用户:
su - db2instl
查看实例下有多少个数据库:
db2 list db directory
启动实例:
db2start
备份mydb 数据库:
db2 backup database mydb
默认是当前路径,离线备份
如果当前存在连接,则备份失败
查看问题详情
db2 ? SQL1035N
解决方法:
方法一:连接端退出数据库链接
db2 terminate
方法二:备份用户连接数据库,强制退出连接数据的应用,然后推出,进行备份操作
db2 list applications --查看连接数
db2 connect to mydb --连接数据库
db2 force applications all --强制退出所有连接
db2 terminate --退出数据库连接
在线备份
如果归档日志没有打开,则报如下错
查看归档日志状态
db2 get db cfg for mydb | grep "LOGARCHMETH1"
修改归档日志,将归档日志归档到指定目录:
db2 update db cfg using LOGARCHMETH1 DISK:/home/db2instl/tmp
注:设置完归档后,建议重新激活数据库使参数生效,同时必须对数据库进行一次备份(设置归档后,数据库处于backup pending状态)
db2 deactivate db <dbname>
db2 terminate
db2 backup db <dbname>
db2 activate db <dbname>
或者,如果可以重启实例,建议重启实例执行
db2stop force
db2start
db2 backup db <dbname>
包含日志备份
db2 backup db mydb online include logs
备份到不同的目录
db2 backup db mydb online to /home/db2instl/db1,/home/db2instl/db2
备份表空间
db2 "backup database mydb tablespace (syscatspace, userspace1) online to /home/db2instl/db_tablespace"
注:online要写在表空间后面,不然报如下错:(SQL0104N An unexpected token “tablespace” was found following “ONLINE”.)
增量备份
增量备份前必须启动增量备份功能,不然报:(SQL2426N The database has not been configured to allow the incremental backup)
启动增量备份功能
db2 update db cfg for mydb using trackmod on
启动增量备份后进行一次数据库备份,不然报:(SQL2426N The database has not been configured to allow the incremental backup
operation. Reason code = “2”.)
db2 backup db mydb online incremental to /home/db2instl/db_tablespace
delta备份:
db2 backup db mydb online incremental delta to /home/db2instl/db_tablespace
总结:
离线备份
db2 list applications --查看连接数
db2 connect to mydb --连接数据库
db2 force applications all --强制退出所有连接
db2 terminate --退出数据库连接
db2 backup database mydb --备份数据库
在线备份
db2 get db cfg for mydb | grep -i "LOGARCHMETH1" --查看归档日志状态
--修改归档日志,将归档日志归档到指定目录
db2 update db cfg using LOGARCHMETH1 DISK:/home/db2instl/tmp
--建议重新激活数据库同时进行一次备份(设置归档后,数据库处于backup pending状态)
db2 deactivate db mydb
db2 terminate
db2 backup db mydb
db2 activate db mydb
增量备份
db2 get db cfg for mydb | grep -i "trackmod" --查看增量备份功能状态
db2 update db cfg for mydb using trackmod on --启动增量备份功能
db2 backup db mydb --建议启动增量备份后进行一次数据库备份
db2 backup db mydb online incremental to /home/db2instl/db_tablespace --增量备份
delta备份
db2 get db cfg for mydb | grep -i "trackmod" --查看增量备份功能状态
db2 update db cfg for mydb using trackmod on --启动增量备份功能
db2 backup db mydb --建议启动增量备份后进行一次数据库备份
db2 backup db mydb online incremental delta to /home/db2instl/db_tablespace
注释:
增量备份:DB2备份自上一次数据库完整备份以来发生变化的所有数据。
delta备份:DB2备份自上一次成功执行的完整备份、增量备份或delta备份以来发生变化的数据
检查备份的完整性
db2ckbkp
检查备份文件的一致性以及备份文件的可用性
显示备份文件的元数据
—h:检查备份文件的完整性