环境:OS Linux CentOS 6
DB DB2 v9.5.0.0
主库:192.168.1.1
备库:192.168.1.2
(1):在主机上创建数据库:
db2 create database TESTDB on /opt/sisc/test/testdb
(2):配置主库参数:
db2 update db cfg for TESTDB using logretain on
db2 update db cfg for TESTDB using trackmod on
db2 update db cfg for TESTDB using logindexbuild on
db2 update db cfg for TESTDB using indexrec restart
db2 update db cfg for TESTDB using HADR_LOCAL_HOST 192.168.1.1
db2 update db cfg for TESTDB using HADR_LOCAL_SVC 54321(当启动HADR后,这个端口就会打开,负责复制的通信,端口可自定义)
db2 update db cfg for TESTDB using HADR_REMOTE_HOST 192.168.1.2
db2 update db cfg for TESTDB using HADR_REMOTE_SVC 54321
db2 update db cfg for TESTDB using HADR_REMOTE_INST db2inst1
db2 update db cfg for TESTDB using HADR_TIMEOUT 120
db2 update db cfg for TESTDB using HADR_PEER_WINDOW 10
db2 update db cfg for TESTDB using HADR_SYNCMODE sync
(3):备份主数据库,生成一个备份文件
db2 backup db TESTDB
注意:如果第一次将日志的方式设置为retain方式,此次备份会使数据库出现backup pending方式。当备用数据库恢复时,不要使用这个备份文件,而是需要重新备份一次,使用第二次备份的文件。并将刚才备份的数据库文件拷贝到一个从机可以使用的文件系统里面。
[db2inst1@localhost db_bak]$ db2 backup db TESTDB
Backup successful. The timestamp for this backup image is : 20101025142658
[db2inst1@localhost db_bak]$ ls -l
total 88472
-rw------- 1 db2inst1 db2iadm1 90501120 Oct 25 14:27
HADRDB.0.db2inst1.NODE0000.CATN0000.20101025142658.001
传输此第二次备份的文件到备用数据库主机中,可以创建与主库相同的目录
[db2inst1@localhost db_bak]$ scp TESTDB.0.db2inst1.NODE0000.CATN0000.20210205101045.001 db2inst1@192.168.1.2:/opt/sisc/test/testdb/
(4):在备用数据库上恢复数据库:
db2 create database TESTDB on /opt/sisc/test/testdb 新建数据库,路径和主库相同
db2 restore db TESTDB into TESTDB 将TESTDB 数据库恢复到TESTDB 数据库中
(5):配置备库参数:
db2 update db cfg for TESTDB using logretain on
db2 update db cfg for TESTDB using trackmod on
db2 update db cfg for TESTDB using logindexbuild on
db2 update db cfg for TESTDB using indexrec restart
db2 update db cfg for TESTDB using HADR_LOCAL_HOST 192.168.1.2
db2 update db cfg for TESTDB using HADR_LOCAL_SVC 54321
db2 update db cfg for TESTDB using HADR_REMOTE_HOST 192.168.1.1
db2 update db cfg for TESTDB using HADR_REMOTE_SVC 54321
db2 update db cfg for TESTDB using HADR_REMOTE_INST db2inst1
db2 update db cfg for TESTDB using HADR_TIMEOUT 120
db2 update db cfg for TESTDB using HADR_PEER_WINDOW 10
db2 update db cfg for TESTDB using HADR_SYNCMODE sync
(6):启动备库,必须先启动备库,再启动主库:
db2stop db2start(此步骤可省略)
db2 "DEACTIVATE DATABASE TESTDB"
db2 start hadr on db TESTDB as standby (TESTDB你的数据库名称)
(7):启动主库:
db2 "DEACTIVATE DATABASE TESTDB"
db2 start hadr on db TESTDB as primary
(8)监控主备数据库状态:
db2pd -hadr -db TESTDB
(9)主备库切换
备库接管主库,下面命令只能在备库执行:
正常接管,相当于Oracle的standby的switchover,接管之后,主变备,备变主,重新在原主库(也就是现在的备库执行此命令),hadr重新回到原来状态
db2 takeover hadr on database TESTDB
db2 get db cfg for trade |grep -i hadr