High Availability Disaster Recovery (HADR)是数据库级别的高可用性数据复制机制, HADR 实现是基于 HDR 的 Informix 实现的(是数据库中高可用性灾难恢复相对比较成熟的功能)。本质上讲, HADR 是一种日志传送功能( DB2 UDB 现在支持这种功能),但它传送的不是固化的磁盘上的日志,而是日志缓冲区中的日志。这种方法提供了充分的粒度来满足解决方案的高可用性需求。 HADR 复制发生在数据库层。
在生产环境下,HADR 环境需要两台数据库服务器:主数据库服务器( primary )和备用数据库服务器( standby )。当主数据库中发生事务操作 时,会同时将日志文件通过 TCP/IP 协议传送到备用数据库服务器,然后备用数据库对接受到的日志文件进行重放( Replay ),从而保持与主数据库的一 致性。当主数据库发生故障时,备用数据库服务器可以接管主数据库服务器的事务处理。此时,备用数据库服务器作为新的主数据库服务器进行数据库的读写操作, 而客户端应用程序的数据库连接可以通过自动客户端重新路由( Automatic Client Reroute )机制转移到新的主服务器。当原来的主数据库服务器被修复后,又可以作为新的备用数据库服务器加入 HADR 。通过这种机制, DB2 UDB 实现了数据库的灾难恢复和高可用性,最大限度的避免了数据丢失。
实施过程及命令行步骤:
一、清理 DB2环境,避免傻逼问题出现
C:/IBM/SQLLIB/BIN>db2ilist
DB2
BAK
C:/IBM/SQLLIB/BIN>db2idrop bak
DB20000I DB2IDROP 命令成功完成。
C:/IBM/SQLLIB/BIN>db2ilist
DB2
C:/IBM/SQLLIB/BIN>cd ..
C:/IBM/SQLLIB>dir
驱动器 C 中的卷没有标签。
卷的序列号是 C470-0EBA
C:/IBM/SQLLIB 的目录
2011/02/22 20:59 <DIR> .
2011/02/22 20:59 <DIR> ..
2011/02/22 20:59 <DIR> adsm
2011/06/16 17:19 <DIR> BIN
2011/02/22 20:59 <DIR> bnd
2011/02/23 09:27 <DIR> cfg
2011/02/22 20:11 <DIR> clidriver
2011/02/22 20:11 <DIR> conv
2011/03/31 14:05 <DIR> dasfcn
2007/10/02 23:11 241 db2cli.opt
2011/02/22 20:10 <DIR> doc
2011/02/23 09:27 <DIR> FUNCTION
2011/02/22 20:11 <DIR> help
2011/02/22 20:59 <DIR> include
2011/02/22 20:12 <DIR> infopop
2010/11/30 15:28 787,408 INFOPOPS_JHELP_CN.exe
2010/11/30 15:29 1,700,448 INFOPOPS_WHELP_CN.exe
2011/02/22 20:59 <DIR> java
2011/02/22 20:59 <DIR> lib
2011/02/27 02:25 <DIR> license
2011/02/22 20:11 <DIR> map
2011/02/22 20:59 <DIR> MISC
2011/02/22 20:11 <DIR> msg
2011/02/22 20:59 <DIR> Readme
2011/02/22 20:59 <DIR> samples
2011/02/22 20:10 <DIR> security
2011/02/27 02:25 <DIR> tivready
2011/03/19 14:21 <DIR> TOOLS
3 个文件 2,488,097 字节
25 个目录 75,457,306,624 可用字节
C:/IBM/SQLLIB>db2icrt db2inst1
DB20000I DB2ICRT 命令成功完成。
C:/IBM/SQLLIB>db2icrt db2inst2
DB20000I DB2ICRT 命令成功完成。
C:/IBM/SQLLIB>cd bin
C:/IBM/SQLLIB/BIN>hadr.cmd
"语法 : handson.cmd <SL510>"
"运行错误,请检查脚本 "
C:/IBM/SQLLIB/BIN>set db2instance=db2inst1
C:/IBM/SQLLIB/BIN>db2start
ADM12026W DB2 服务器检测到尚未注册产品 "DB2 Enterprise Server Edition" 的有效许
可证。
SQL1063N DB2START 处理成功。
C:/IBM/SQLLIB/BIN>db2 drop db sample
SQL1031N 在指示的文件系统中找不到数据库目录。 SQLSTATE=58031
C:/IBM/SQLLIB/BIN>db2stop
SQL1064N DB2STOP 处理成功。
C:/IBM/SQLLIB/BIN>db2idrop db2inst1
DB20000I DB2IDROP 命令成功完成。
C:/IBM/SQLLIB/BIN>set db2instance=db2inst2
C:/IBM/SQLLIB/BIN>db2start
ADM12026W DB2 服务器检测到尚未注册产品 "DB2 Enterprise Server Edition" 的有效许
可证。
SQL1063N DB2START 处理成功。
C:/IBM/SQLLIB/BIN>db2 drop db sample
SQL1031N 在指示的文件系统中找不到数据库目录。 SQLSTATE=58031
C:/IBM/SQLLIB/BIN>db2stop
SQL1064N DB2STOP 处理成功。
C:/IBM/SQLLIB/BIN>db2idrop db2inst2
DB20000I DB2IDROP 命令成功完成。
二、创建 2个实例, db2inst1 作为主, db2inst2 作为副。库以 sample 库为例
C:/IBM/SQLLIB/BIN>db2icrt db2inst1
DB20000I DB2ICRT 命令成功完成。
C:/IBM/SQLLIB/BIN>set db2instance=db2inst1
C:/IBM/SQLLIB/BIN>db2start
ADM12026W DB2 服务器检测到尚未注册产品 "DB2 Enterprise Server Edition" 的有效许
可证。
SQL1063N DB2START 处理成功。
C:/IBM/SQLLIB/BIN>db2 update dbm cfg using svcename 33333
DB20000I UPDATE DATABASE MANAGER CONFIGURATION 命令成功完成。
C:/IBM/SQLLIB/BIN>db2set db2comm=tcpip
C:/IBM/SQLLIB/BIN>db2 terminate
DB20000I TERMINATE 命令成功完成。
C:/IBM/SQLLIB/BIN>db2stop
SQL1064N DB2STOP 处理成功。
C:/IBM/SQLLIB/BIN>db2start
ADM12026W DB2 服务器检测到尚未注册产品 "DB2 Enterprise Server Edition" 的有效许
可证。
SQL1063N DB2START 处理成功。
C:/IBM/SQLLIB/BIN>db2sampl.exe
Creating database "SAMPLE"...
Connecting to database "SAMPLE"...
Creating tables and data in schema "JAMIN"...
Creating tables with XML columns and XML data in schema "JAMIN"...
'db2sampl' processing complete.
三、 将主库设置为归档模式,这是必须的。
C:/IBM/SQLLIB/BIN>db2 update db cfg for sample using LOGRETAIN RECOVERY
DB20000I UPDATE DATABASE CONFIGURATION 命令成功完成。
C:/IBM/SQLLIB/BIN>db2 backup db sample to c:/temp
备份成功。此备份映像的时间戳记是:20110616173329
C:/IBM/SQLLIB/BIN>db2icrt db2inst2
DB20000I DB2ICRT 命令成功完成。
C:/IBM/SQLLIB/BIN>set db2instance=db2inst2
C:/IBM/SQLLIB/BIN>db2start
ADM12026W DB2 服务器检测到尚未注册产品 "DB2 Enterprise Server Edition" 的有效许
可证。
SQL1063N DB2START 处理成功。