区别比较大,说实话如果环境里db2多,干脆用tsm得了,因为tsm和db2都是IBM产品,集成度特别高,操作也比较简单
一. 先说数据备份吧
tsm配置步骤:
- db2开启归档, 开启归档需要做脱机备份
- 如果需要增量,设置trackmod参数为on
- 执行节点验证:/home/db2inst1/sqllib/adsm/dsmapipw 需要tsm服务端先注册节点
- 直接备份即可
db2 "backup db xxx online use tsm open 4 sessions include logs"
nbu配置步骤:
- db2开启归档, 开启归档需要做脱机备份
- 如果需要增量,设置trackmod参数为on
- 添加db2实例 /usr/openv/netbackup/bin/db2_config
- 根据/usr/openv/netbackup/ext/db_ext/db2/scripts/下的示例修改备份脚本
- 在java console配置policy
- 配置db2.conf文件,参考内容如下:
DATABASE xxxdb
OBJECTTYPE DATABASE
POLICY xxxdb_backup_policyname
SCHEDULE Default-Application-Backup
ENDOPER
二. 日志备份
db2最恶心的就是日志备份,都是通过修改LOGARCHMETH1参数实现的
tsm配置:
使用tsm,日志切换有两种
- 使用tsm,日志直接切换到tsm里
db2 update db cfg for xxx using logarchmeth1 TSM - 使用disk,日志切换到磁盘上,可以使用tsm归档走, 也可以使用tsm备份走,然后通过脚本删除日志
db2 update db cfg for testdb2 using logarchmeth1 DISK:/db2data/archlog
nbu配置:
四种方式:
- 使用disk,日志切换到磁盘上,可以使用user archive备份走, 也可以使用普通的文件备份policy备份,然后通过脚本删除日志
db2 update db cfg for testdb2 using logarchmeth1 DISK:/db2data/archlog - vendor方式: 直接切到nbu里
db2 update db cfg for testdb1 using logarchmeth1 VENDOR:/usr/openv/netbackup/bin/nbdb2.so64
然后通过db2.conf控制
DATABASE testdb1
OBJECTTYPE ARCHIVE
POLICY db2_testdb1_full
SCHEDULE db2log_vendor
ENDOPER
- arcfunc save方式 save方式的直接将日志切到nbu里,通过nbu里的user backup类型的策略备份归档日志。前滚的时候无需人工干预,直接通过出口程序找日志。
db2 update db cfg for testdb3 using logarchmeth1 userexit
然后通过db2.conf指定
DATABASE testdb3
OBJECTTYPE ARCHIVE
POLICY db2_testdb3_logsave
SCHEDULE user
ARCFUNC SAVE
ENDOPER
- arcfunc copy 方式会先将日志归档到arcdir里,归档成功后删除,日志是通过user archive策略来备份的
db2 update db cfg for testdb4 using logarchmeth1 userexit
再通过db2.conf控制
DATABASE testdb4
OBJECTTYPE ARCHIVE
POLICY db2_testdb4_logcopy
SCHEDULE user
ARCFUNC COPY
ARCDIR /db2data/db2inst2/arcdir
RETDIR /db2data/db2inst2/arcdir
ENDOPER
日志总结:
小库使用vendor或者tsm都可以,管理方便。 大库建议放本地,如果备份服务器繁忙或者备份服务器offline,db2数据库容易hang住