Database JUNKY

MySQL,MariaDBを中心としたブログです

HA環境を構築する。(HADR)

今は、全く利用していないのですが、IBM DB2のHADR の構築手順を証跡として残した資料になります。何をやるにも、ちょっと設定が面倒なDB2.. でもやはり、商用DBは強固です

db2

HADR構築手順

マシン構成

以下の構成でHADRを構成する手順を記載いたします。

  • active
    • os
      CentOS release 5 (Final)
    • network
      • host
        hostname: tenten
        ipaddr: 192.168.1.11
    • mem
                   total       used       free     shared    buffers     cached
      Mem:       2075680    2017400      58280          0       9196    1459600
      -/+ buffers/cache:     548604    1527076
      Swap:      2031608     139756    1891852
    • db2
      • product
        Product name:                     "DB2 Express-C"
        License type:                     "保証なし"
        Expiry date:                      "永続"
        Product identifier:               "db2expc"
        Version information:              "9.5"
        Max number of CPUs:               "2"
  • standby
    • os
      CentOS release 5 (Final)
    • network
      • host
        hostname: neji
        ipaddr: 192.168.1.12
  • mem
                 total       used       free     shared    buffers     cached
    Mem:        515524     476176      39348          0       5360     224568
    -/+ buffers/cache:     246248     269276
    Swap:      1048568     103572     944996
  • db2
    • product
      Product name:                     "DB2 Express-C"
      License type:                     "保証なし"
      Expiry date:                      "永続"
      Product identifier:               "db2expc"
      Version information:              "9.5"
      Max number of CPUs:               "2"

前提条件(あと注意事項)

  • active
    • dbにて、tentenという名称のデータベースが作成されている
  • standby
    • dbは何も入っていないこと
  • 注意事項(IBM からの記載事項)
    DB2 Express-C で高可用性構成を組むことはできますか?
    できません。無償版の DB2 Express-C は単独での使用を前提としており、
    高可用性構成を組むこ とは認められていません。
    高可用性構成とは、ログ・シッピング、クラスタリング・ソフトウエアを使用した
    ホットスタンバイ構成、レプリケーション、
    HADR (High Availability Disaster Recovery) などを含みます。
    高可用性構成が必要な場合は Express-C + FTL 
    または商用版 DB2 Express などの利用をご検討ください。
    • 出来ないといっているわけではなく、認められていません。といっているところに注意してください。HADRに関しては動くか動かないかといわれると結果としては、動きます。当ページは、構築手法だけを記載しているもので、動作が確認された時点でHA構成は結果的に削除しておりますので、そのあたりだけご注意ください。

手順

  • 事前準備
    • active,standby共通(以下、共通を記載)
      • /etc/hosts にホストを追記
        # 新規追加
        192.168.1.11          tenten.konoha.local tenten
        192.168.1.12          neji.konoha.local neji
      • /etc/servicesの以下を追加
        DB2_HADRP       50010/tcp
        DB2_HADRS       50020/tcp
        CLNT_HADR       50030/tcpDB2_HADRP プライマリノード
        ※ DB2_HADRS セカンダリノード
      • DBM構成パラメータの変更(インスタンスオーナーで実行)
        $db2 update dbm cfg using svcename CLNT_HADR
  • active
    • DB構成パラメータの変更(インスタンスオーナーで実行)
      $ db2 update db cfg for tenten using LOGRETAIN recovery
      $ db2 update db cfg for tenten using HADR_LOCAL_HOST tenten
      $ db2 update db cfg for tenten using HADR_LOCAL_SVC DB2_HADRP
      $ db2 update db cfg for tenten using HADR_REMOTE_HOST neji
      $ db2 update db cfg for tenten using HADR_REMOTE_SVC DB2_HADRS
      $ db2 update db cfg for tenten using HADR_REMOTE_INST db2admin
      $ db2 update db cfg for tenten using HADR_SYNCMODE nearsync
      $ db2 update db cfg for tenten using HADR_TIMEOUT 30
      $ db2 update db cfg for tenten using logindexbuild on
    • データベースのバックアップ
      $ db2 backup db tenten to /app/backup/
      バックアップは成功しました。
      このバックアップ・イメージのタイム・スタンプは
      20080713160232 です。
  • standby
    • データベースのリストア(上記にてバックアップしたファイル利用)
      nfs からバックアップファイルを取得し、インスタンスオーナーのhomeにコピーしています。(ここは別にftpでもなんでもいいです。
      $ cp -rf TENTEN.0.db2admin.NODE0000.CATN0000.20080713170556.001 /home/db2admin/
      $ chmod -Rf 777 TENTEN.0.db2admin.NODE0000.CATN0000.20080713170556.001
      $ db2 restore db tenten
      DB20000I  RESTORE DATABASE コマンドが正常に完了しました。
  • DB構成パラメータの変更(インスタンスオーナーで実行)
    $ db2 update db cfg for tenten using HADR_LOCAL_HOST neji
    $ db2 update db cfg for tenten using HADR_LOCAL_SVC DB2_HADRS
    $ db2 update db cfg for tenten using HADR_REMOTE_HOST tenten
    $ db2 update db cfg for tenten using HADR_REMOTE_SVC DB2_HADRP
    $ db2 update db cfg for tenten using HADR_REMOTE_INST db2admin
    $ db2 update db cfg for tenten using HADR_SYNCMODE nearsync
    $ db2 update db cfg for tenten using HADR_TIMEOUT 30
    $ db2 update db cfg for tenten using logindexbuild on
  • スタンバイサーバの起動
    $ db2 start hadr on db tenten as standby
    DB20000I  START HADR ON DATABASE コマンドが正常に完了しました。
  • HADR 起動確認
    $ db2pd –hadr –db tenten
    Database Partition 0 -- Database TENTEN -- Active -- Up 0 days 00:01:44
    HADR Information:
    Role    State                SyncMode HeartBeatsMissed   LogGapRunAvg (bytes)
    Standby RemoteCatchupPending Nearsync 0                  0                   
    ConnectStatus ConnectTime                           Timeout   
    Disconnected  Sat Jul 12 23:54:06 2008 (1215874446) 30        
    LocalHost                                LocalService      
    neji                                     DB2_HADRS         
    RemoteHost                               RemoteService      RemoteInstance    
    tenten                                   DB2_HADRP          db2admin          
    PrimaryFile  PrimaryPg  PrimaryLSN        
    S0000000.LOG 0          0x0000000001788000
    StandByFile  StandByPg  StandByLSN        
    S0000000.LOG 0          0x0000000001788000
  • active
    • プライマリの起動
      $ db2 start hadr on db tenten as primary
      DB20000I  START HADR ON DATABASE コマンドが正常に完了しました。
    • HADR 起動確認(Primary がpeerになっていれば完了)
      $ db2pd -hadr -db tenten
      Database Partition 0 -- Database TENTEN -- Active -- Up 0 days 00:00:25
      HADR Information:
      Role    State                SyncMode HeartBeatsMissed   LogGapRunAvg (bytes)
      Primary Peer                 Nearsync 0                  0                   
      ConnectStatus ConnectTime                           Timeout   
      Connected     Sun Jul 13 17:25:02 2008 (1215937502) 30        
      LocalHost                                LocalService      
      tenten                                   DB2_HADRP         
      RemoteHost                               RemoteService      RemoteInstance    
      neji                                     DB2_HADRS          db2admin          
      PrimaryFile  PrimaryPg  PrimaryLSN        
      S0000000.LOG 0          0x0000000001788000
      StandByFile  StandByPg  StandByLSN        
      S0000000.LOG 0          0x0000000001788000

参考情報