はじめに
OpenShift/Kubernetes環境でDb2を動かすには、マイクロサービスとして開発される、k8s環境専用のDb2製品を導入します。
このDb2は、Db2 for Red Hat OpenShift and Kubernetes、別名Db2Uとも呼ばれます。
Db2として公式の Kubernetes Operator が提供され、導入・バックアップリストアのためのカスタムリソースが利用できます。
Db2 for OpenShift のバックアップには、いくつかの方法が提供されます。
- BACKUPコマンド(従来のオンプレミス版Db2とほぼ同じ)
- ストレージ機能を利用したスナップショット
- Velero (Kubernetes環境に特化したバックアップツール)
- Db2バックアップ用に提供されるカスタムリソース Db2uBackup, Db2uRestore (2023.07時点 TechPreview)
カスタムリソース Db2uBackup, Db2uRestoreは、OPC WebコンソールからDb2のバックアップ・リストアを実施するためのインターフェースを提供してくれるものです。
GUI画面でバックアップ、リストアそれぞれの詳細なオプションを指定することができます。
裏では、Db2 BACKUP DATABASE コマンド、RESTORE DATABASE コマンドが実行されます。
まだテクニカルプレビュー扱いのためか、Db2製品マニュアルにはこの機能は登場しません。
しかしGUI画面で作業を進められるため、直感的に使うことができます。
環境
- Red Hat OpenShift Kubernetes Service (ROKS) 上に Db2 for RHOS and k8s をデプロイ
コンポーネント | バージョン |
---|---|
OpenShift | 4.10.52 |
OpenShift Data Foundation | odf-operator.v4.10.9 |
Db2 for OpenShift | s11.5.8.0-cn2 |
参考:Db2マニュアル Db2 for RHOS and K8s > 11.5.8 > Installing Db2
バックアップ・リストア手順
全体の流れ
以下の流れで取得します。
バックアップを取得した後、データの一部を削除します。(ユーザミスによりデータを消し込んでしまった)
その後、リストアにより、データが復元され元の状態に戻ったことを確認します。
- 検証開始前のデータ内容確認
- Db2uBackup API実行(バックアップ取得)
- バックアップ取得後のデータ編集
- Db2uRestore API実行(リストア)
- リストア後のデータ内容確認
Step1. 検証開始前のデータ内容確認
T1表に3行格納した状態で開始します
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U db2inst1]$ date ; db2 "select * from t1"
Wed Jun 7 07:37:33 UTC 2023
C1 C2
----------- --------------------------------
1 test data1
2 test data2
3 test data3
3 record(s) selected.
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U db2inst1]$
Step2. Db2uBackup API実行(バックアップ取得)
(1)バックアップ取得
OCP Webコンソールを開き、「Operator」>「インストール済みのOperator」 の一覧から、「IBM Db2」(Db2 for RHOS and k8s の Operator) をクリックします
「Db2u Backup」APIの「インスタンスの作成」をクリックします
YAMLビューが開きます。
入力項目を把握するためフォームビューに切り替えます。
フォームビューで必要な設定項目を編集し「作成」を押下します。
項目名 | 概要 |
---|---|
名前 | 取得するバックアップに付与する名前 |
Db2uName | バックアップ取得対象のDb2uの名称 (Db2uCluster OR Db2uInstanceのデプロイ名) |
Db Name | バックアップ取得対象のデータベース名 (デフォルトではBLUDB) |
Backup Type | バックアップ種別 [online|offline|incremental] |
バックアップ取得のステータスは、Db2u Operator画面「Db2u Backup」タブで確認することができます。
この画面(Db2u Backupタブ)からリストアすることはできません。
Db2uBackupオブジェクトの端にある三点メニューから実施できるのは、編集と削除のみです。
####(2)バックアップ取得確認
Db2uBackup API の呼び出しによって、Db2 BACKUPコマンドが実行されていることを確認します。
Db2u Podにログインします
# oc rsh c-db2ucluster-4-db2u-0 bash
Defaulted container "db2u" out of: db2u, init-labels (init), init-kernel (init)
[db2uadm@c-db2ucluster-4-db2u-0 /]$ su - db2inst1
Last login: Thu Jul 27 16:11:38 UTC 2023
Db2uのデフォルトのバックアップイメージ配置先ディレクトリに移動し、バックアップ・イメージが作成されていることを確認します
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U backup_off_1]$ pwd
/mnt/backup/SAMPLEDB/db2ubackup-4-1/backup_off_1
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U backup_off_1]$ ls -la
total 557224
drwxrwxr-x. 2 db2inst1 db2iadm1 1 Jun 7 07:32 .
drwxr-xr-x. 4 db2inst1 db2iadm1 2 Jun 7 07:31 ..
-rw-rw----. 1 db2inst1 db2iadm1 570597376 Jun 7 07:32 SAMPLEDB.0.db2inst1.DBPART000.20230607073217.001
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U backup_off_1]$
db2ckbkpコマンドを利用し、Db2 BACKUPコマンドにより作成されたバックアップ・イメージであること、バックアップ・イメージの状態に問題がないことを確認します。
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U backup_off_1]$ db2ckbkp ./SAMPLEDB.0.db2inst1.DBPART000.20230607073217.001
[1] Buffers processed: ###################################
Image Verification Complete - successful.
-h オプションを付与して再度db2ckbkpコマンドを実行し、バックアップ取得対象DB名や取得時刻、Db2バージョンなどの詳細情報も確認します。
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U backup_off_1]$ db2ckbkp -h ./SAMPLEDB.0.db2inst1.DBPART000.20230607073217.001
=====================
MEDIA HEADER REACHED:
=====================
Server Database Name -- SAMPLEDB
Server Database Alias -- SAMPLEDB
Client Database Alias -- SAMPLEDB
Timestamp -- 20230607073217
Database Partition Number -- 0
Instance -- db2inst1
Database Configuration Type -- 0 (Non-shared data)
Sequence Number -- 1
Database Member ID -- 0
Release ID -- 0x1500 (DB2 v11.5.8.0)
AL version -- V:11 R:5 M:8 F:0 I:0 SB:0
Database Seed -- 0xCD95C324
DB Comment's Codepage (Volume) -- 0
DB Comment (Volume) --
DB Comment's Codepage (System) -- 0
DB Comment (System) --
Authentication Value -- 255 (Not specified)
Backup Mode -- 0 (Offline)
Includes Logs -- 0 (No)
Compression -- 2 (Encrypted)
Backup Type -- 0 (Database-level)
Backup Granularity -- 0 (Non-incremental)
Merged Backup Image -- 0 (No)
Status Flags -- 0x1021
Consistent across all members
LOGARCHMETH1 is set
Database uses default primary log path
System Catalogs in this image -- 1 (Yes)
Catalog Partition Number -- 0
DB Codeset -- UTF-8
DB Territory -- JP
LogID -- 1686015744
LogPath -- Default
Backup Buffer Size -- 16781312 (4097 4K pages)
Number of Sessions -- 1
Platform -- 0x1E (Linux-x86-64)
Encrypt Info Flags -- 0x1
Source DB was encrypted
The proper image file name would be:
SAMPLEDB.0.db2inst1.DBPART000.20230607073217.001
[1] Buffers processed: ###################################
Image Verification Complete - successful.
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U backup_off_1]$
想定通り、Db2のバックアップが取得されていることが確認できました。
Step3. バックアップ取得後のデータ編集
T1表からレコードを1行削除します(→元々3行だったが2行になった)
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U db2inst1]$ date ; db2 "delete from t1 where c1=3"
Wed Jun 7 10:32:52 UTC 2023
DB20000I The SQL command completed successfully.
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U db2inst1]$ date ; db2 "select * from t1"
Wed Jun 7 10:32:55 UTC 2023
C1 C2
----------- --------------------------------
1 test data1
2 test data2
2 record(s) selected.
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U db2inst1]$
Step4. Db2uRestore API実行(リストア)
OCP Webコンソールよりリストアを行います。
Db2 Operator の詳細画面から「Db2u Restore」>「インスタンスの作成」をクリックします
リストアにあたり最低限必要となる設定項目を指定し「作成」を押下します。
項目名 | 概要 |
---|---|
名前 | 今回実施するリストア処理につける名前 |
Db2uName | リストア実施対象のDb2uの名称 (Db2uCluster OR Db2uInstanceのデプロイ名) |
DbuBackup | リストアを行うDb2uBackupの名称 |
リストアが完了するとステータス列が「Complete」に変わります
これでリストアが完了しました。
Step5. リストア後のデータ内容確認
T1表のデータを確認し、リストアができていることを確認します
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U db2inst1]$ date ; db2 "select * from t1"
Wed Jun 7 11:08:10 UTC 2023
C1 C2
----------- --------------------------------
1 test data1
2 test data2
3 test data3
3 record(s) selected.
[db2inst1@c-db2ucluster-4-db2u-0 - Db2U db2inst1]$
元々3行格納されていたT1表からバックアップ取得後に1行削除し、2行になっていました。
リストア完了後に確認すると、3行に戻っています。
バックアップ取得時点のデータに戻ったことが確認できました。
補足
Db2uBackup / Db2uRestore で選択可能なオプション
Db2U 11.5.8-cn2時点ではまだサポートがありませんが、ロールフォワード含め以下のようなオプションも選択可能になりそうです。
- 表スペース単位バックアップリストア
- スキーマ単位のバックアップリストア
- リストアオプション指定(End-of-Backup / PIT / End-of-logs)
- バックアップ取得先指定(現在はDiskのみ、他オプション不明)
バックアップ・リストア時のYaml
apiVersion: db2ubnr.databases.ibm.com/v1alpha1
kind: Db2uBackup
metadata:
name: db2ubackup-4-1
namespace: db2u-1
spec:
databaseBackup:
backupTarget:
vendor: disk
dbName: sampledb
type: offline
db2uName: db2ucluster-4
apiVersion: db2ubnr.databases.ibm.com/v1alpha1
kind: Db2uRestore
metadata:
name: db2urestore-4-1
namespace: db2u-1
spec:
db2uBackup: db2ubackup-4-1
db2uName: db2ucluster-4