TimesTenデータベースの管理
オペレータは、データベースのアクティブ・スタンバイ・ペアがデプロイされると、実行し続けようとします。Kubernetesでは、ポッドのライフサイクルが管理されます。ポッドに障害が発生した場合、ポッドは再作成されます。また、ポッドを実行しているノードで障害が発生した場合、使用可能なKubernetesクラスタ・ノード上にポッドが再作成されます。オペレータはポッドで実行されているTimesTenを監視し、データベースのペアを動作させておくための適切な操作を開始します。これらの操作はオペレータによって自動的に行われるため、管理者操作が最小限に抑えられます。
次の各項では、実行できる手動操作について説明します。
TimesTenユーティリティの手動による起動
kubectl
exec
-it
コマンドを使用して、TimesTenインスタンスでTimesTenユーティリティを手動で起動できます。このコマンドを使用すると、ポッドのシェルを起動し、ポッドでのTimesTenの実行を制御できます。
TimesTenは、tt
コンテナでtimesten
ユーザーとして実行されます。
ノート:
オペレータは引き続き、ポッドのステータスおよびポッド内のTimesTenのステータスを問い合せています。ポッドまたはTimesTenの機能を妨げるコマンドを起動すると、オペレータは実行された操作の修正を試みることがあります。
次の例は、kubectl
exec
-it
コマンドを使用して、TimesTenデータベースを含むsample-0
ポッド内のシェルを起動する方法を示しています。その後、ttIsql
ユーティリティを実行できます。
% kubectl exec -it sample-0 -c tt -- /bin/bash % ttIsql sample Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved. Type ? or "help" for help, type "exit" to quit ttIsql. connect "DSN=sample"; Connection successful: DSN=sample;UID=timesten;DataStore=/tt/home/timesten/datastore/sample; DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;PermSize=200; DDLReplicationLevel=3; (Default setting AutoCommit=1)
TimesTen接続属性の変更
TimesTenでは、データベースの属性を定義するために接続属性を使用します。接続属性には次の3つのタイプがあります。
-
データ・ストア属性: データベースを破棄して再作成することでのみ変更できるデータベースの特性を定義します。
-
初期接続属性: データベースをアンロードしてメモリーにリロードすることで変更できるデータベースの特性を定義します。
-
一般接続属性: アプリケーションがデータベースにアクセスする方法を制御します。このような属性は、接続中は保持されます。
TimesTen接続属性の詳細は、『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性のリストおよび『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のデータ・マネージャDSNまたはサーバーDSNの接続属性を参照してください。
Kubernetes環境の場合:
-
データ・ストア属性を変更するには、TimesTenClassicオブジェクトとTimesTenClassicオブジェクトに関連付けられたPersistentVolumeClaimsを削除する必要があります。そうすることで、TimesTenデータベースを削除します。削除プロセスの詳細は、「TimesTenデータベースのアクティブ・スタンバイ・ペアの削除」および「クリーン・アップ」を参照してください。
-
初期接続属性と一般接続属性の変更には、TimesTenClassicオブジェクトの削除(それによるデータベースの削除)とTimesTenClassicオブジェクトに関連付けられたPersistentVolumeClaimsの削除は不要です。一部の初期接続属性を変更する場合に、TimesTenの制限がある点に注意してください。
初期接続属性または一般接続属性を変更するには:
-
まず、
db.ini
ファイルを編集する必要があります。「db.iniファイルの手動編集」の手順を完了します。このセクションは、最初に完了しておく必要があります。
その後で、次のステップを実行します。
-
初期接続属性を変更する場合は、「初期接続属性の変更」の手順を実行します。
-
一般接続属性を変更する場合は、「一般接続属性の変更」の手順を実行します。
db.iniファイルの手動編集
このセクションは、初期接続属性と一般接続属性のどちらか(または両方)を変更する場合に完了します。この項は、「初期接続属性の変更」または「一般接続属性の変更」の項に進む前に完了しておく必要があります。
初期接続属性または一般接続属性を変更するには、sys.odbc.ini
ファイルを変更する必要があります。
TimesTenClassicオブジェクトを作成してTimesTenデータベースのアクティブ・スタンバイ・ペアをすでに作成していたときに、sys.odbc.ini
ファイル内の初期接続属性または一般接続属性を変更する場合は、db.ini
ファイルを変更する必要があります。
db.ini
ファイルの変更方法の詳細は、db.ini
ファイルを収容するために最初に使用した機能によって異なります。(その可能性のある機能には、ConfigMap、Secretまたは初期化コンテナが含まれます。詳細は、「/ttconfigディレクトリの移入」を参照してください。)
この例では、最初にdb.ini
ファイルを収容してTimesTenコンテナの/ttconfig
ディレクトリを移入するためにConfigMap機能が使用されました。この例では、sample
ConfigMapを変更します。
そのステップは次のとおりです。
sample
ConfigMapの変更が完了しました。初期接続属性を変更する場合は、「初期接続属性の変更」に進んでください。一般接続属性のみを変更する場合は、「一般接続属性の変更」に進んでください。
初期接続属性の変更
db.ini
ファイルを変更していない場合は、「db.iniファイルの手動編集」に進みます。ここでは、スタンバイ・ポッドを削除してから、アクティブ・ポッドを削除する必要があります。TimesTenを実行しているコンテナを収容するポッドを削除すると、オペレータは削除したポッドを置き換えるために新しいポッドを作成します。この新しいポッドには、/ttconfig
ディレクトリにあるdb.ini
ファイルの内容から作成された新しいsys.odbc.ini
ファイルが収容されます。
次のステップを実行して、スタンバイ・データベースを削除します。
初期接続属性のPermSize
とTempSize
の変更が正常に完了しました。
一般接続属性の変更
db.ini
ファイルを変更していない場合は、「db.iniファイルの手動編集」に進みます。アクティブTimesTenデータベースのsys.odbc.ini
ファイルとスタンバイTimesTenデータベースのsys.odbc.ini
ファイルは、直接変更することも、「初期接続属性の変更」の項のステップに従って変更することもできます。最初の方法(sys.odbc.ini
ファイルの直接的な変更)のほうが、問題の発生が少なくなります。
この項では、sys.odbc.ini
ファイルを直接変更する手順について説明します。
sys.odbc.ini
ファイルは、アクティブTimesTenデータベースを収容するポッドのTimesTenコンテナと、スタンバイTimesTenデータベースを収容するポッドのTimesTenコンテナにあります。sys.odbc.ini
ファイルの変更を完了していると、それ以降のアプリケーションは該当する一般接続属性を使用してデータベースに接続できるようになります。
この例では、sys.odbc.in
iファイルの編集方法について説明します。
-
kubectl
exec
-it
コマンドを使用して、アクティブ・ポッドのシェルを呼び出します。(この例では、sample-0
がアクティブ・ポッドです)。% kubectl exec -it sample-0 -c tt -- /bin/bash Last login: Fri Apr 08 22:43:26 UTC 2023 on pts/8
-
現在のディレクトリ(
/tt/home/timesten
)を確認します。% pwd /tt/home/timesten
-
sys.odbc.ini
ファイルが格納されているディレクトリに移動します。sys.odbc.ini
ファイルは、/tt/home/timesten/instances/instance1/conf
ディレクトリにあります。したがって、instances/instance1/conf
ディレクトリに移動します。% cd instances/instance1/conf
-
DSN (この例では
sample
)の一般接続属性を追加、変更または削除することで、sys.odbc.ini
ファイルを編集します。ノート:
TimesTenの一般接続属性にのみ変更を加えるようにしてください。データ・ストア属性と初期接続属性は、
sys
.
odbc
.
ini
ファイルを直接編集して変更することはできません。この例では、
sample
DSNを変更し、一般接続属性のConnectionCharacterSet
を追加して、その値をAL32UTF8
に設定します(boldで表示)。vi sys.odbc.ini [ODBC Data Sources] sample=TimesTen 22.1 Driver tt=TimesTen 22.1 Driver [sample] Datastore=/tt/home/timesten/datastore/sample PermSize=200 DatabaseCharacterSet=AL32UTF8 ConnectionCharacterSet=AL32UTF8 DDLReplicationLevel=3 AutoCreate=0 ForceDisconnectEnabled=1 ...
-
ttIsql
ユーティリティを使用して、sample
データベースに接続し、ConnectionCharacterSet
属性の値がAL32UTF8
になっていることを確認します(boldで表示)。% ttIsql sample Copyright (c) 1996, 2023, Oracle and/or its affiliates. All rights reserved. Type ? or "help" for help, type "exit" to quit ttIsql. connect "DSN=sample"; Connection successful: DSN=sample;UID=timesten;DataStore=/tt/home/timesten/datastore/sample; DatabaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8; AutoCreate=0;PermSize=200;DDLReplicationLevel=3;ForceDisconnectEnabled=1; (Default setting AutoCommit=1)
アクティブ・ポッド(この例ではsample-0
)のTimesTenコンテナにある sys.odbc.ini
ファイルの変更が完了しました。同じ手順を使用して、スタンバイ・ポッド(この例ではsample-1
)のTimesTenコンテナにあるsys.odbc.ini
ファイルを変更します。
次に例を示します。
アクティブ・ポッド(sample-0
)のTimesTenコンテナにあるsys.odbc.ini
ファイルと、スタンバイ・ポッド(sample-1
)のTimesTenコンテナにあるsys.odbc.ini
ファイルの変更が完了しました。また、一般接続属性ConnectionCharacterSet
も変更されました。
手動制御に戻す
アクティブ・スタンバイ・ペアを手動で操作する場合は、timesten-operator
デプロイメントを削除できます。オペレータは停止し、再起動しません。これは、Kubernetesクラスタで実行されているすべてのTimesTenClassicオブジェクトに影響します。オペレータですべてのTimesTenClassicオブジェクトの管理を停止しない場合は、個々のTimesTenClassicオブジェクトの管理を一時停止できます。詳細は、「TimesTenClassicオブジェクトの管理の一時停止」を参照してください。
TimesTenデータベースのアクティブ・スタンバイ・ペアを表すTimesTenClassicオブジェクトは、それらに関連付けられた他のKubernetesオブジェクトと同様にKubernetesに残ります。kubectl
exec
-it
コマンドを使用してポッドのシェルを起動し、それらのポッドで実行されているTimestenを制御できます。
アクティブ・スタンバイ・ペアの1つまたは両方のポッドで障害が発生した場合、Kubernetesは新しいポッドを作成して置き換えます。これは、オペレータが以前にKubernetesで作成したStatefulSetオブジェクトによるものです。ただし、オペレータは新しいポッドを実行していないため、TimesTenを自動的に起動できません。この場合、アクティブ・スタンバイ・ペアを構成または起動することはできません。ユーザーがポッドでTimesTenの操作を行う必要があります。
再びオペレータで制御を行う場合は、オペレータを再デプロイする必要があります。オペレータを再デプロイすると、オペレータはKubernetesクラスタ内のTimesTenClassicオブジェクトを自動的に識別し、それらの管理を再試行します。
この例は、TimesTenを手動で制御する方法を示しています。
TimesTenデータベースのアクティブ・スタンバイ・ペアの削除
TimesTenデータベースのアクティブ・スタンバイ・ペアを表すTimesTenClassicオブジェクトを削除すると、Kubernetesは自動的にすべてのKubernetesオブジェクトとそのオブジェクトが使用しているリソースを削除します。ペアに関連付けられているStatefulSet、サービスおよびポッドは、すべてKubernetesから削除されます。ただし、(TimesTenデータベースが格納されている) PersistentVolumeClaimsは削除されません。TimesTenClassicオブジェクトを削除した後、PersistentVolumeClaims (PVC)を手動で削除する必要があります。PVCを手動で削除した後、データベースを保持しているPersistentVolumesはKubernetesで再利用されます。(これはKubernetesボリューム保存ポリシーを使用して制御できますが、オペレータでは制御されません)。
例として、kubectl
delete
コマンドを使用して、sample
データベースのPVCを削除します。
% kubectl delete pvc tt-persistent-sample-0 persistentvolumeclaim "tt-persistent-sample-0" deleted % kubectl delete pvc tt-persistent-sample-1 persistentvolumeclaim "tt-persistent-sample-1" deleted