Db2(V11.5)でデータベースのバックアップを取得する!

Db2(V11.5)でデータベースのバックアップを取得します。データベースバックアップの世代数を決めて、不要なバックアップファイルやログファイルを自動(DBの機能)で削除します。

使用環境

  • CentOS 8.1 (Server with GUI)
  • Db2 V11.5

最初に決めておくこと

データベースのバックアップを取得時に、バックアップファイルやログファイルを自動(DBの機能)で削除するため、以下を決めておきます。

  • バックアップの世代数(NUM_DB_BACKUPS)
  • バックアップ履歴の保管日数(REC_HIS_RETENTN)
No Name Value Comments
01 AUTO_MAINT ON default
02 NUM_DB_BACKUPS 2 default: 12
03 REC_HIS_RETENTN 0 default: 90
04 AUTO_DEL_REC_OBJ ON default: OFF

DBの設定変更

DBの設定変更を行います。HADRを使用している場合は、スタンバイ側のDBの設定も変更しておきましょう。

$ db2 "update db cfg for db01 using NUM_DB_BACKUPS   2"
$ db2 "update db cfg for db01 using REC_HIS_RETENTN  0"
$ db2 "update db cfg for db01 using AUTO_DEL_REC_OBJ ON"
$ db2stop
$ db2start

オフラインバックアップの取得と自動メンテナンス機能の確認

オフラインでバックアップを取得します。

接続中のセッションの確認

接続中のセッションを確認します。

$ db2 list applications

詳細な情報が必要な場合は、以下のコマンドを使用します。

$ db2 list applications show detail

接続中のセッションの切断

接続中のセッションをすべて切断します。

$ db2 force applications all

データベースへのアクセスを禁止

データベースへのアクセスを禁止します。

$ db2 deactivate db db01

データベースのバックアップの取得(1回目)

1回目データベースのバックアアップを取得します。※compressは、オプションです。バックアップサイズが小さくなり、I/Oが少なくなることから、バックアップ時間も長くなりません。ただし、圧縮を行うために、CPU使用率が高くなることに注意しましょう。

$ db2 backup db db01 to $HOME/db2backups compress
$ ls -l $HOME/db2backups
total 27572
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:52 DB01.0.db2inst1.DBPART000.20200425225243.001
drwxr-xr-x. 2 db2inst1 db2iadm1       58 Apr 25 19:15 tmp

データベースのバックアップの取得(2回目)

2回目データベースのバックアアップを取得します。

$ db2 backup db db01 to $HOME/db2backups compress
$ ls -l $HOME/db2backups
total 55144
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:52 DB01.0.db2inst1.DBPART000.20200425225243.001
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:55 DB01.0.db2inst1.DBPART000.20200425225526.001
drwxr-xr-x. 2 db2inst1 db2iadm1        6 Apr 25 22:55 tmp

データベースのバックアップの取得(3回目)

3回目データベースのバックアアップを取得します。最初のバックアップは自動で削除されます!超便利です。

$ db2 backup db db01 to $HOME/db2backups compress
$ ls -l $HOME/db2backups
total 55144
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:55 DB01.0.db2inst1.DBPART000.20200425225526.001
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:59 DB01.0.db2inst1.DBPART000.20200425225939.001
drwxr-xr-x. 2 db2inst1 db2iadm1        6 Apr 25 22:55 tmp

バックアップファイルを手動で移動

ここで、手動でバックアップを移動します。

$ mv $HOME/db2backups/DB01.0.db2inst1.DBPART000.20200425225526.001 $HOME/db2backups/tmp
$ ls -lR $HOME/db2backups
/home/db2inst1/db2backups:
total 27572
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:59 DB01.0.db2inst1.DBPART000.20200425225939.001
drwxr-xr-x. 2 db2inst1 db2iadm1       58 Apr 25 23:14 tmp

/home/db2inst1/db2backups/tmp:
total 27572
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:55 DB01.0.db2inst1.DBPART000.20200425225526.001

データベースのバックアップの取得(4回目、5回目)

バックアップを別のフォルダに移動して、バックアップを取得し続けます。すると、移動したバックアップは削除されずに、バックアップが世代管理されていきます。臨時で取得した残したいバックアップは、手動で移動させておきましょう。

$ db2 backup db db01 to $HOME/db2backups compress
$ ls -lR $HOME/db2backups
/home/db2inst1/db2backups:
total 55144
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:59 DB01.0.db2inst1.DBPART000.20200425225939.001
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 23:17 DB01.0.db2inst1.DBPART000.20200425231736.001
drwxr-xr-x. 2 db2inst1 db2iadm1       58 Apr 25 23:14 tmp

/home/db2inst1/db2backups/tmp:
total 27572
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:55 DB01.0.db2inst1.DBPART000.20200425225526.001
$ db2 backup db db01 to $HOME/db2backups compress
$ ls -lR $HOME/db2backups
/home/db2inst1/db2backups:
total 55144
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 23:17 DB01.0.db2inst1.DBPART000.20200425231736.001
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 23:18 DB01.0.db2inst1.DBPART000.20200425231816.001
drwxr-xr-x. 2 db2inst1 db2iadm1       58 Apr 25 23:14 tmp

/home/db2inst1/db2backups/tmp:
total 27572
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:55 DB01.0.db2inst1.DBPART000.20200425225526.001

データベースのアクセスを可能に戻す

バックアップの取得が完了したら、データベースのアクセス可能にします。

$ db2 activate db db01

データベースのバックアップ履歴を確認

データベースの自動メンテナンス機能は、データベースのバックアップ履歴を使用しています。自動メンテナンスの状況を正確に把握したいときは、データベースのバックアップ履歴を確認しましょう。

$ db2 list history backup all for db01

                    List History File for db01

Number of matching file entries = 2


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20200425231736001   F    D  S0000006.LOG S0000006.LOG                
 ----------------------------------------------------------------------------
  Contains 3 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP DB01 OFFLINE
 Start Time: 20200425231736
   End Time: 20200425231738
     Status: A
 ----------------------------------------------------------------------------
  EID: 13 Location: /home/db2inst1/db2backups


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20200425231816001   F    D  S0000006.LOG S0000006.LOG                
 ----------------------------------------------------------------------------
  Contains 3 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP DB01 OFFLINE
 Start Time: 20200425231816
   End Time: 20200425231819
     Status: A
 ----------------------------------------------------------------------------
  EID: 14 Location: /home/db2inst1/db2backups

データベースのバックアップの状況確認

データベースのバックアアップが長時間化し、状況を確認したい場合は、以下のコマンドを使用します。

$ db2 list utilities show detail

オンラインバックアップの取得と自動メンテナンス機能の確認

オンラインバックアップを取得して、自動メンテナンス機能の動作を確認します。

オンラインバックアップの取得(1回目)

オフラインバックアップに続けて、オンラインバックアップを取得します。

$ db2 backup db db01 online to $HOME/db2backups compress include logs

Backup successful. The timestamp for this backup image is : 20200425234038

$ ls -lR $HOME/db2backups
/home/db2inst1/db2backups:
total 54136
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 23:18 DB01.0.db2inst1.DBPART000.20200425231816.001
-rw-------. 1 db2inst1 db2iadm1 27201536 Apr 25 23:40 DB01.0.db2inst1.DBPART000.20200425234038.001
drwxr-xr-x. 2 db2inst1 db2iadm1       58 Apr 25 23:14 tmp

/home/db2inst1/db2backups/tmp:
total 27572
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:55 DB01.0.db2inst1.DBPART000.20200425225526.001
$ ls -l $HOME/db2arclogs/db2inst1/DB01/NODE0000/LOGSTREAM0000/C0000000
total 12
-rw-r-----. 1 db2inst1 db2iadm1 12288 Apr 25 23:40 S0000006.LOG
$ db2 list history backup all for db01

                    List History File for db01

Number of matching file entries = 2


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20200425231816001   F    D  S0000006.LOG S0000006.LOG                
 ----------------------------------------------------------------------------
  Contains 3 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP DB01 OFFLINE
 Start Time: 20200425231816
   End Time: 20200425231819
     Status: A
 ----------------------------------------------------------------------------
  EID: 14 Location: /home/db2inst1/db2backups


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20200425234038001   N    D  S0000006.LOG S0000006.LOG                
 ----------------------------------------------------------------------------
  Contains 3 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP DB01 ONLINE
 Start Time: 20200425234038
   End Time: 20200425234041
     Status: A
 ----------------------------------------------------------------------------
  EID: 17 Location: /home/db2inst1/db2backups

$ db2 "list history all for db db01" | grep " B "
  B  D  20200425231816001   F    D  S0000006.LOG S0000006.LOG                
  B  D  20200425234038001   N    D  S0000006.LOG S0000006.LOG                
$ db2 "list history all for db db01" | grep " X "
  X  D  20200425234041      1    D  S0000006.LOG C0000000                    
  X  D  20200425234041      P    D  S0000007.LOG C0000000                    

オンラインバックアップの取得(2回目)

2回目のオンラインバックアップを取得します。

$ db2 backup db db01 online to $HOME/db2backups compress include logs

Backup successful. The timestamp for this backup image is : 20200425235809

$ ls -lR $HOME/db2backups
/home/db2inst1/db2backups:
total 53128
-rw-------. 1 db2inst1 db2iadm1 27201536 Apr 25 23:40 DB01.0.db2inst1.DBPART000.20200425234038.001
-rw-------. 1 db2inst1 db2iadm1 27201536 Apr 25 23:58 DB01.0.db2inst1.DBPART000.20200425235809.001
drwxr-xr-x. 2 db2inst1 db2iadm1       58 Apr 25 23:14 tmp

/home/db2inst1/db2backups/tmp:
total 27572
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:55 DB01.0.db2inst1.DBPART000.20200425225526.001
$ db2 list history backup all for db01

                    List History File for db01

Number of matching file entries = 2


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20200425234038001   N    D  S0000006.LOG S0000006.LOG                
 ----------------------------------------------------------------------------
  Contains 3 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP DB01 ONLINE
 Start Time: 20200425234038
   End Time: 20200425234041
     Status: A
 ----------------------------------------------------------------------------
  EID: 17 Location: /home/db2inst1/db2backups


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20200425235809001   N    D  S0000007.LOG S0000007.LOG                
 ----------------------------------------------------------------------------
  Contains 3 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP DB01 ONLINE
 Start Time: 20200425235809
   End Time: 20200425235812
     Status: A
 ----------------------------------------------------------------------------
  EID: 19 Location: /home/db2inst1/db2backups

$ ls -l $HOME/db2arclogs/db2inst1/DB01/NODE0000/LOGSTREAM0000/C0000000
total 24
-rw-r-----. 1 db2inst1 db2iadm1 12288 Apr 25 23:40 S0000006.LOG
-rw-r-----. 1 db2inst1 db2iadm1 12288 Apr 25 23:58 S0000007.LOG
$ db2 "list history all for db db01" | grep " B "
  B  D  20200425234038001   N    D  S0000006.LOG S0000006.LOG                
  B  D  20200425235809001   N    D  S0000007.LOG S0000007.LOG                
$ db2 "list history all for db db01" | grep " X "
  X  D  20200425234041      1    D  S0000006.LOG C0000000                    
  X  D  20200425234041      1    D  S0000007.LOG C0000000                    
  X  D  20200425235812      P    D  S0000008.LOG C0000000                    

オンラインバックアップの取得(3回目)

3回目のオンラインバックアップを取得します。

$ db2 backup db db01 online to $HOME/db2backups compress include logs

Backup successful. The timestamp for this backup image is : 20200426000918

$ ls -lR $HOME/db2backups
/home/db2inst1/db2backups:
total 53128
-rw-------. 1 db2inst1 db2iadm1 27201536 Apr 25 23:58 DB01.0.db2inst1.DBPART000.20200425235809.001
-rw-------. 1 db2inst1 db2iadm1 27201536 Apr 26 00:09 DB01.0.db2inst1.DBPART000.20200426000918.001
drwxr-xr-x. 2 db2inst1 db2iadm1       58 Apr 25 23:14 tmp

/home/db2inst1/db2backups/tmp:
total 27572
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:55 DB01.0.db2inst1.DBPART000.20200425225526.001
$ db2 list history backup all for db01

                    List History File for db01

Number of matching file entries = 2


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20200425235809001   N    D  S0000007.LOG S0000007.LOG                
 ----------------------------------------------------------------------------
  Contains 3 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP DB01 ONLINE
 Start Time: 20200425235809
   End Time: 20200425235812
     Status: A
 ----------------------------------------------------------------------------
  EID: 19 Location: /home/db2inst1/db2backups


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20200426000918001   N    D  S0000008.LOG S0000008.LOG                
 ----------------------------------------------------------------------------
  Contains 3 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP DB01 ONLINE
 Start Time: 20200426000918
   End Time: 20200426000922
     Status: A
 ----------------------------------------------------------------------------
  EID: 21 Location: /home/db2inst1/db2backups

$ ls -l $HOME/db2arclogs/db2inst1/DB01/NODE0000/LOGSTREAM0000/C0000000
total 36
-rw-r-----. 1 db2inst1 db2iadm1 12288 Apr 25 23:40 S0000006.LOG
-rw-r-----. 1 db2inst1 db2iadm1 12288 Apr 25 23:58 S0000007.LOG
-rw-r-----. 1 db2inst1 db2iadm1 12288 Apr 26 00:09 S0000008.LOG
$ db2 "list history all for db db01" | grep " B "
  B  D  20200425235809001   N    D  S0000007.LOG S0000007.LOG                
  B  D  20200426000918001   N    D  S0000008.LOG S0000008.LOG                
$ db2 "list history all for db db01" | grep " X "
  X  D  20200425234041      1    D  S0000006.LOG C0000000                    
  X  D  20200425234041      1    D  S0000007.LOG C0000000                    
  X  D  20200425235812      1    D  S0000008.LOG C0000000                    
  X  D  20200426000922      P    D  S0000009.LOG C0000000                    

オンラインバックアップの取得(4回目)

4回目のオンラインバックアップを取得します。不要になったアーカイブログ(S0000006.LOG、S0000007.LOG)も削除されました。

$ db2 backup db db01 online to $HOME/db2backups compress include logs

Backup successful. The timestamp for this backup image is : 20200426001741

$ ls -lR $HOME/db2backups
/home/db2inst1/db2backups:
total 53128
-rw-------. 1 db2inst1 db2iadm1 27201536 Apr 26 00:09 DB01.0.db2inst1.DBPART000.20200426000918.001
-rw-------. 1 db2inst1 db2iadm1 27201536 Apr 26 00:17 DB01.0.db2inst1.DBPART000.20200426001741.001
drwxr-xr-x. 2 db2inst1 db2iadm1       58 Apr 25 23:14 tmp

/home/db2inst1/db2backups/tmp:
total 27572
-rw-------. 1 db2inst1 db2iadm1 28233728 Apr 25 22:55 DB01.0.db2inst1.DBPART000.20200425225526.001
$ db2 list history backup all for db01

                    List History File for db01

Number of matching file entries = 2


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20200426000918001   N    D  S0000008.LOG S0000008.LOG                
 ----------------------------------------------------------------------------
  Contains 3 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP DB01 ONLINE
 Start Time: 20200426000918
   End Time: 20200426000922
     Status: A
 ----------------------------------------------------------------------------
  EID: 21 Location: /home/db2inst1/db2backups


 Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
 -- --- ------------------ ---- --- ------------ ------------ --------------
  B  D  20200426001741001   N    D  S0000009.LOG S0000009.LOG                
 ----------------------------------------------------------------------------
  Contains 3 tablespace(s):

 00001 SYSCATSPACE
 00002 USERSPACE1
 00003 SYSTOOLSPACE
 ----------------------------------------------------------------------------
    Comment: DB2 BACKUP DB01 ONLINE
 Start Time: 20200426001741
   End Time: 20200426001745
     Status: A
 ----------------------------------------------------------------------------
  EID: 23 Location: /home/db2inst1/db2backups

$ ls -l $HOME/db2arclogs/db2inst1/DB01/NODE0000/LOGSTREAM0000/C0000000
total 24
-rw-r-----. 1 db2inst1 db2iadm1 12288 Apr 26 00:09 S0000008.LOG
-rw-r-----. 1 db2inst1 db2iadm1 12288 Apr 26 00:17 S0000009.LOG
$ db2 "list history all for db db01" | grep " B "
  B  D  20200426000918001   N    D  S0000008.LOG S0000008.LOG                
  B  D  20200426001741001   N    D  S0000009.LOG S0000009.LOG                
$ db2 "list history all for db db01" | grep " X "
  X  D  20200425235812      1    D  S0000008.LOG C0000000                    
  X  D  20200426000922      1    D  S0000009.LOG C0000000                    
  X  D  20200426001745      P    D  S0000010.LOG C0000000                    

補足

今回、REC_HIS_RETENTNの値は「0」に設定して、リストアに必要となる必要最小限のアーカイブログのみ保持するようにしましたが、実際の運用では、バックアップのサイクルに合わせて残したい日数を設定したほうが安全です。

おわりに

データベースのバックアップファイルやログファイルは、手動でメンテナンスしても問題ありませんが、自動メンテナンス機能での運用が確立できれば、データベースバックアップおよびアーカイブログの削除もDBに任せることができます。