天天看點

DB2 HADR安裝

1.系統環境準備,db02作為primary節點,db03作為standby節點

[db2inst1​​​@db02​​ archivelog]$ cat /etc/hosts

192.168.2.167 db02
192.168.2.163 db03      

2.建立主庫并插入表

db2 "CREATE DB testdb on /db2data/testdb using codeset UTF-8 territory us PAGESIZE 8192"
db2 "UPDATE DB CFG FOR testdb USING applheapsz 4096"
db2 "UPDATE DB CFG FOR testdb USING app_ctl_heap_sz 1024"
db2 "UPDATE DB CFG FOR testdb USING stmtheap 32768"
db2 "UPDATE DB CFG FOR testdb USING dbheap 2400"
db2 "UPDATE DB CFG FOR testdb USING locklist 1000"
db2 "UPDATE DB CFG FOR testdb USING logfilsiz 4000"
db2 "UPDATE DB CFG FOR testdb USING logprimary 12"
db2 "UPDATE DB CFG FOR testdb USING logsecond 20"
db2 "UPDATE DB CFG FOR testdb USING logbufsz 32"
db2 "UPDATE DB CFG FOR testdb USING avg_appls 5"
db2 "UPDATE DB CFG FOR testdb USING locktimeout 30"
db2 "UPDATE DB CFG FOR testdb using AUTO_MAINT off"

db2 "UPDATE DB CFG FOR TESTDB USING LOGINDEXBUILD  ON  LOGARCHMETH1 logretain"
db2 "update db cfg for testdb using trackmod on"
db2 "update db cfg for testdb using indexrec restart"
db2 "update db cfg for testdb using HADR_LOCAL_HOST 192.168.2.167"
db2 "update db cfg for testdb using HADR_LOCAL_SVC 54321"
db2 "update db cfg for testdb using HADR_REMOTE_HOST 192.168.2.163"
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.備份主庫并傳送至備庫

[db2inst1@db02 testdb]$ db2 backup db testdb to /db2data/backup/
[db2inst1@db02 backup]$ cd /db2data/backup
[db2inst1@db02 backup]$ scp TESTDB.0.db2inst1.DBPART000.20190811162133.001 192.168.2.163:/db2data/backup/      

4.恢複備庫,在備庫執行

[db2inst1@db03 backup]$ db2 restore db testdb from /db2data/backup/      

5.修改備庫hadr參數

db2 "update db cfg for testdb using HADR_LOCAL_HOST 192.168.2.163"
db2 "update db cfg for testdb using HADR_REMOTE_HOST 192.168.2.167"      

6.修改hadr_target_list

主庫執行

db2 "UPDATE DB CFG FOR TESTDB USING HADR_TARGET_LIST  192.168.2.163:54321"      

備庫執行

db2 "UPDATE DB CFG FOR TESTDB USING HADR_TARGET_LIST  192.168.2.167:54321"      

7.備機啟動HADR

[db2inst1@db03 backup]$ db2 START HADR ON DB TESTDB AS STANDBY
DB20000I  The START HADR ON DATABASE command completed successfully.      

8.在主庫啟動HADR

[db2inst1@db02 backup]$ db2 START HADR ON DB TESTDB AS PRIMARY
DB20000I  The START HADR ON DATABASE command completed successfully.      

9.在主機檢查主備機狀态​

[db2inst1@db02 backup]$ db2pd -db testdb -hadr

Database Member 0 -- Database TESTDB -- Active -- Up 0 days 00:01:02 -- Date 2019-08-11-17.00.43.510622

                            HADR_ROLE = PRIMARY
                          REPLAY_TYPE = PHYSICAL
                        HADR_SYNCMODE = SYNC
                           STANDBY_ID = 1
                        LOG_STREAM_ID = 0
                           HADR_STATE = PEER
                           HADR_FLAGS = 
                  PRIMARY_MEMBER_HOST = 192.168.2.167
                     PRIMARY_INSTANCE = db2inst1
                       PRIMARY_MEMBER = 0
                  STANDBY_MEMBER_HOST = 192.168.2.163
                     STANDBY_INSTANCE = db2inst1
                       STANDBY_MEMBER = 0
                  HADR_CONNECT_STATUS = CONNECTED
             HADR_CONNECT_STATUS_TIME = 08/11/2019 16:59:44.003073 (1565513984)
          HEARTBEAT_INTERVAL(seconds) = 2
                HADR_TIMEOUT(seconds) = 120
        TIME_SINCE_LAST_RECV(seconds) = 30
             PEER_WAIT_LIMIT(seconds) = 0
           LOG_HADR_WAIT_CUR(seconds) = 0.000
    LOG_HADR_WAIT_RECENT_AVG(seconds) = 0.000000
   LOG_HADR_WAIT_ACCUMULATED(seconds) = 0.000
                  LOG_HADR_WAIT_COUNT = 0
SOCK_SEND_BUF_REQUESTED,ACTUAL(bytes) = 0, 19800
SOCK_RECV_BUF_REQUESTED,ACTUAL(bytes) = 0, 87380
            PRIMARY_LOG_FILE,PAGE,POS = S0000000.LOG, 0, 40760001
            STANDBY_LOG_FILE,PAGE,POS = S0000000.LOG, 0, 40760001
                  HADR_LOG_GAP(bytes) = 0
     STANDBY_REPLAY_LOG_FILE,PAGE,POS = S0000000.LOG, 0, 40760001
       STANDBY_RECV_REPLAY_GAP(bytes) = 4069492
                     PRIMARY_LOG_TIME = 08/11/2019 16:53:24.000000 (1565513604)
                     STANDBY_LOG_TIME = 08/11/2019 16:53:24.000000 (1565513604)
              STANDBY_REPLAY_LOG_TIME = 08/11/2019 16:53:24.000000 (1565513604)
         STANDBY_RECV_BUF_SIZE(pages) = 64
             STANDBY_RECV_BUF_PERCENT = 0
           STANDBY_SPOOL_LIMIT(pages) = 128000
                STANDBY_SPOOL_PERCENT = 0
                 PEER_WINDOW(seconds) = 10
                      PEER_WINDOW_END = 08/11/2019 17:00:52.000000 (1565514052)
             READS_ON_STANDBY_ENABLED = N      

10.在備機執行指令

[db2inst1@db03 backup]$ db2pd -db testdb -hadr

Database Member 0 -- Database TESTDB -- Standby -- Up 0 days 00:02:43 -- Date 2019-08-11-17.01.37.581033

                            HADR_ROLE = STANDBY
                          REPLAY_TYPE = PHYSICAL
                        HADR_SYNCMODE = SYNC
                           STANDBY_ID = 0
                        LOG_STREAM_ID = 0
                           HADR_STATE = PEER
                           HADR_FLAGS = 
                  PRIMARY_MEMBER_HOST = 192.168.2.167
                     PRIMARY_INSTANCE = db2inst1
                       PRIMARY_MEMBER = 0
                  STANDBY_MEMBER_HOST = 192.168.2.163
                     STANDBY_INSTANCE = db2inst1
                       STANDBY_MEMBER = 0
                  HADR_CONNECT_STATUS = CONNECTED
             HADR_CONNECT_STATUS_TIME = 08/11/2019 16:59:43.802864 (1565513983)
          HEARTBEAT_INTERVAL(seconds) = 30
                HADR_TIMEOUT(seconds) = 120
        TIME_SINCE_LAST_RECV(seconds) = 2
             PEER_WAIT_LIMIT(seconds) = 0
           LOG_HADR_WAIT_CUR(seconds) = 0.000
    LOG_HADR_WAIT_RECENT_AVG(seconds) = 0.000000
   LOG_HADR_WAIT_ACCUMULATED(seconds) = 0.000
                  LOG_HADR_WAIT_COUNT = 0
SOCK_SEND_BUF_REQUESTED,ACTUAL(bytes) = 0, 19800
SOCK_RECV_BUF_REQUESTED,ACTUAL(bytes) = 0, 87380
            PRIMARY_LOG_FILE,PAGE,POS = S0000000.LOG, 0, 40760001
            STANDBY_LOG_FILE,PAGE,POS = S0000000.LOG, 0, 40760001
                  HADR_LOG_GAP(bytes) = 0
     STANDBY_REPLAY_LOG_FILE,PAGE,POS = S0000000.LOG, 0, 40760001
       STANDBY_RECV_REPLAY_GAP(bytes) = 4069492
                     PRIMARY_LOG_TIME = 08/11/2019 16:53:24.000000 (1565513604)
                     STANDBY_LOG_TIME = 08/11/2019 16:53:24.000000 (1565513604)
              STANDBY_REPLAY_LOG_TIME = 08/11/2019 16:53:24.000000 (1565513604)
         STANDBY_RECV_BUF_SIZE(pages) = 64
             STANDBY_RECV_BUF_PERCENT = 0
           STANDBY_SPOOL_LIMIT(pages) = 128000
                STANDBY_SPOOL_PERCENT = 0
                 PEER_WINDOW(seconds) = 10
                      PEER_WINDOW_END = 08/11/2019 17:01:46.000000 (1565514106)
             READS_ON_STANDBY_ENABLED = N      

11.備機接管主機

[db2inst1@db03 backup]$ db2 "TAKEOVER HADR ON DATABASE testdb USER db2inst1 USING wwwwww"
DB20000I  The TAKEOVER HADR ON DATABASE command completed successfully.      

這樣原來的備機變成主機,主機變成備機。

12.強制接管

強制接管條件:當主機資料庫崩潰,需要備機強制接管成為主機,備機成為主機後,需要手動的備份資料庫,再恢複到已經崩潰的資料庫中。

db2 "TAKEOVER HADR ON DATABASE testdb USER db2inst1 USING wwwwww by force"