27 Cassandra用のOracle GoldenGateキャプチャの使用
Cassandra用のOracle GoldenGateキャプチャ(Extract)を使用して、Apache Cassandraデータベースから変更を取得します。
- 概要
- Cassandraチェンジ・データ・キャプチャの設定
- 重複排除
- トポロジの変更
- CDCログでのデータの可用性
- Extract初期ロードの使用
- チェンジ・データ・キャプチャのExtractの使用
- RDBMSターゲットへの複製
- 静的な列のパーティション更新または挿入
- パーティション削除
- セキュリティと認証
- CDCコミット・ログ・ファイルのクリーン・アップ
使用していないCDCコミット・ログ・ファイルをパージするには、Cassandra CDCコミット・ログ・パージャ・プログラムを使用します。 - 複数のExtractのサポート
- CDC構成リファレンス
- トラブルシューティング
27.1 概要
Apache Cassandraは、大量のデータを格納するために設計されたNoSQLデータベース管理システムです。Cassandraクラスタ構成によって、複数のマシン間でデータの水平スケーリングおよびレプリケーションが行われます。Cassandraクラスタ内の複数のノードにデータを複製することによって、高可用性が実現し、シングル・ポイント障害を防ぐことができます。Apache Cassandraはオープン・ソースで、低価格のコモディティ・ハードウェア上で実行できるように設計されています。
Cassandraでは、原子性、整合性、独立性および永続性に関して、従来のリレーショナル・データベース管理システム(RDBMS)の原理が緩和されています。Cassandraの実装を検討する場合は、従来のRDBMSとの相違点と、その相違点が個々のユースケースにどのように影響するかを理解しておくことが重要です。
Cassandraでは最終的に整合性が保たれます。最終的整合性モデルでは、特定の行のデータの状態にアクセスすると、最新の変更によって定義されたとおりに、その行のデータの最新状態を最終的には返します。ただし、行の状態の作成および変更と、その行の状態を問い合せたときの戻り値の間に、レイテンシ期間が生じる場合があります。最終的整合性には、Cassandra構成およびCassandraクラスタが現在置かれているワークロードのレベルに応じてレイテンシ期間が予測されるという利点があります。http://cassandra.apache.org/を参照してください。
データ型のサポートを確認し、「Cassandraのデータ型について」を参照してください。
27.2 Cassandraチェンジ・データ・キャプチャの設定
前提条件
-
Apache Cassandraクラスタでは、少なくとも1つのノードが稼働している必要があります。
-
クラスタ内のすべてのライブ・ノード上でのCDCコミット・ログ・ファイルへの読取りおよび書込みアクセスは、SFTPまたはNFSを介して行われます。詳細は、「CassandraノードへのSSH接続の設定」を参照してください。
-
Cassandraクラスタ内のすべてのノードで、
cassandra.yaml
構成ファイルのcdc_enabled
パラメータがtrue
に設定されている必要があります。 -
すべてのCassandraノードについて、
cassandra.yaml
でnum_tokens
パラメータを設定することによって、仮想ノードを有効にする必要があります。 -
「Cassandraキャプチャ・クライアント依存性」にリストされているサード・パーティのライブラリをダウンロードして指定する必要があります。
-
チェンジ・データ・キャプチャが有効な新しい表を作成するには、
CREATE TABLE
コマンドでWITH CDC=true
句を使用します。たとえば:CREATE TABLE ks_demo_rep1.mytable (col1 int, col2 text, col3 text, col4 text, PRIMARY KEY (col1)) WITH cdc=true;
次のように、既存の表でCDCを有効にできます。
ALTER TABLE ks_demo_rep1.mytable WITH cdc=true;
- CassandraノードへのSSH接続の設定
Oracle GoldenGate for BigDataは、すべてのCassandraノードからCassandraコミット・ログ・ファイルを転送します。Oracle GoldenGateがセキュア・シェル・プロトコル(SFTP)を使用してコミット・ログ・ファイルを転送できるようにするために、known_hosts
SSHファイルを生成します。 - データ型
- Cassandraデータベースの操作
27.2.1 CassandraノードへのSSH接続の設定
Oracle GoldenGate for BigDataは、すべてのCassandraノードからCassandraコミット・ログ・ファイルを転送します。Oracle GoldenGateがセキュア・シェル・プロトコル(SFTP)を使用してコミット・ログ・ファイルを転送できるようにするために、known_hosts
SSHファイルを生成します。
known_hosts
SSHファイルを生成するには:
親トピック: Cassandraチェンジ・データ・キャプチャの設定
27.2.2 データ型
サポートされているCassandraデータ型
サポートされるデータ型は次のとおりです。
-
ASCII
-
BIGINT
-
BLOB
-
BOOLEAN
-
DATE
-
DECIMAL
-
DOUBLE
-
DURATION
-
FLOAT
-
INET
-
INT
-
SMALLINT
-
TEXT
-
TIME
-
TIMESTAMP
-
TIMEUUID
-
TINYINT
-
UUID
-
VARCHAR
-
VARINT
サポートされていないデータ型
サポートされないデータ型は次のとおりです。
-
COUNTER
-
MAP
-
SET
-
LIST
-
UDT
(ユーザー定義型) -
TUPLE
-
CUSTOM_TYPE
親トピック: Cassandraチェンジ・データ・キャプチャの設定
27.2.3 Cassandraデータベースの操作
サポートされている操作
サポートされる操作は次のとおりです。
-
INSERT
-
UPDATE
(INSERT
としてキャプチャ) -
DELETE
サポートされていない操作
TRUNCATE
DDL
(CREATE
、ALTER
およびDROP
)操作はサポートされていません。Cassandraコミット・ログ・ファイルはUPDATE
またはDELETE
操作の操作前イメージを記録しないため、キャプチャされた操作には操作前イメージがありません。競合の検出や解決など、操作前イメージのレコードに依存するOracle GoldenGate機能は使用できません。
親トピック: Cassandraチェンジ・データ・キャプチャの設定
27.3 重複排除
Cassandraクラスタの機能の1つは、高可用性です。高可用性をサポートするために、表のデータの複数の冗長コピーがクラスタ内の異なるノードに格納されます。Oracle GoldenGate for Big Data Cassandraキャプチャでは、重複行が自動的にフィルタ処理で除外されます(重複排除)。重複排除はデフォルトでアクティブとなります。データがキャプチャされて重複レコードが推奨されないターゲット(RDBMSターゲットなど)に適用される場合は、重複排除を使用することをお薦めします。
27.4 トポロジの変更
クラスタがライブになったまま、Cassandraノードのステータスが変化(トポロジの変更)する場合があります。Oracle GoldenGate for Big Data Cassandraキャプチャは、ノードのステータスの変更を検出し、必要に応じてそれらの変更に対応できます。Cassandraキャプチャ・プロセスは、クラスタで実行されている次のイベントを検出できます。
-
ノードの停止および起動。
-
ノードのデコミッションおよびコミッション。
-
新しいキースペースおよび表の作成。
トポロジが変更されたため、キャプチャ・プロセスはアクティブなプロデューサ・ノードが停止したことを検出した場合は、使用可能なレプリカ・ノードから欠落した行を回復しようとします。このプロセス中に、一部の行でデータの重複が発生する可能性があります。これは、トポロジの変更による一時的なデータの重複です。トポロジの変更への対処の詳細は、「トラブルシューティング」を参照してください。
27.5 CDCログでのデータの可用性
Cassandra CDC APIは、CDCディレクトリのコミット・ログ・ファイルからのデータのみを読み取ることができます。アクティブなコミット・ログ・ディレクトリ内のデータがCDCコミット・ログ・ディレクトリにアーカイブされる(移動する)とき、レイテンシが発生します。
Cassandraキャプチャ・プロセスの入力データ・ソースはCDCコミット・ログ・ディレクトリです。キャプチャされるデータに遅延が発生する可能性があり、これは、主に、キャプチャ・プロセスでまだ認識されるようになっていないコミット・ログ・ファイルがあることによるものです。
アクティビティの多い本番クラスタでは、データがアクティブなコミット・ログ・ディレクトリからマイクロ秒のオーダーでCDCコミット・ログ・ディレクトリにアーカイブされるため、このレイテンシが最小化されます。
27.6 Extract初期ロードの使用
Cassandra Extractでは、ソース表のデータをOracle GoldenGate証跡ファイルに抽出する標準の初期ロード機能がサポートされます。
Cassandraの初期ロードを実行すると、変更の複製の前提条件のステップまたはスタンドアロン機能として表を同期化できます。
ソースCassandra表からターゲット表への直接ロードはサポートされていません。
初期ロードの構成
これらのパラメータは、GLOBALS
パラメータ・ファイルに追加する必要があります。
OGGSOURCE CASSANDRA CLUSTERCONTACTPOINTS nodeadresses
たとえば、1つの証跡ファイルに書き込むことができます。
SOURCEISTABLE SOURCEDB keyspace1, USERID user1, PASSWORD pass1 EXTFILE ./dirdat/load_data.dat, PURGE TABLE keyspace1.table1;
次に、GGSCIで次のコマンドを実行します。
EXTRACT PARAMFILE ./dirprm/load.prm REPORTFILE ./dirrpt/load.rpt
複数のファイルに書き込む場合は、次を使用します
EXTRACT load SOURCEISTABLE SOURCEDB keyspace1, USERID user1, PASSWORD pass1 EXTFILE ./dirdat/la, megabytes 2048, MAXFILES 999 TABLE keyspace1.table1;
ノート:
この例で指定された名前(load.prm
)でdirprm
ディレクトリにファイルを保存します。
次に、GGSCIで次のコマンドを実行します。
ADD EXTRACT load, SOURCEISTABLE START EXTRACT load
27.7 チェンジ・データ・キャプチャのExtractの使用
$HOME/AdapterExamples/big-data/cassandracapture
でOracle GoldenGate for Big Dataインストール・ディレクトリから.prm
ファイルの例を確認します。
-
CassandraのExtract証跡を追加する場合は、
EXTTRAIL
を使用してローカル証跡ファイルを作成する必要があります。CassandraのExtract証跡ファイルは、
RMTTRAIL
オプションを使用して構成しないでください。ggsci> ADD EXTRACT groupname, TRANLOG ggsci> ADD EXTTRAIL trailprefix, EXTRACT groupname Example: ggsci> ADD EXTRACT cass, TRANLOG ggsci> ADD EXTTRAIL ./dirdat/z1, EXTRACT cass
-
Extractを構成するには、
$HOME/AdapterExamples/big-data/cassandracapture
のOracle GoldenGate for Big Dataインストール・ディレクトリの.prm
ファイルの例を参照してください。 -
Extractを配置します。
ggsci> ADD EXTRACT groupname, TRANLOG, BEGIN NOW ggsci> ADD EXTRACT groupname, TRANLOG, BEGIN ‘yyyy-mm-dd hh:mm:ss’ ggsci> ALTER EXTRACT groupname, BEGIN ‘yyyy-mm-dd hh:mm:ss’
-
表のトランザクション・データのロギングを管理します。
ggsci> DBLOGIN SOURCEDB nodeaddress USERID userid PASSWORD password ggsci> ADD TRANDATA keyspace.tablename ggsci> INFO TRANDATA keyspace.tablename ggsci> DELETE TRANDATA keyspace.tablename
例:
ggsci> DBLOGIN SOURCEDB 127.0.0.1 ggsci> INFO TRANDATA ks_demo_rep1.mytable ggsci> INFO TRANDATA ks_demo_rep1.* ggsci> INFO TRANDATA *.* ggsci> INFO TRANDATA ks_demo_rep1.”CamelCaseTab” ggsci> ADD TRANDATA ks_demo_rep1.mytable ggsci> DELETE TRANDATA ks_demo_rep1.mytable
-
GLOBALSパラメータ・ファイルの最後に次の行を追加します。
JVMBOOTOPTIONS -Dlogback.configurationFile=AdapterExamples/big-data/cassandracapture/logback.xml
-
ExtractおよびGLOBALSパラメータ・ファイルを構成します。
- Apache Cassandra 3.11 SDK (Apache Cassandra 3.9、3.10、3.11との互換性あり)
-
Extractパラメータ・ファイル:
EXTRACT groupname TRANLOGOPTIONS CDCREADERSDKVERSION 3.11 TRANLOGOPTIONS CDCLOGDIRTEMPLATE /path/to/data/cdc_raw SOURCEDB nodeaddress VAM libggbigdata_vam.so EXTTRAIL trailprefix TABLE *.*;
GLOBALSパラメータ・ファイル:
OGGSOURCE CASSANDRA CLUSTERCONTACTPOINTS nodeadresses JVMCLASSPATH ggjava/ggjava.jar:/path/to/cassandra-driver-core/3.3.1/cassandra-driver-core-3.3.1.jar:dirprm:/path/to/apache-cassandra-3.11.0/lib/*:/path/to/gson/2.3/gson-2.3.jar:/path/to/jsch/0.1.54/jsch-0.1.54.jar:/path/to/commons-lang3/3.5/commons-lang3-3.5.jar
サポートされているすべてのCassandraデータベース・バージョンの最新のCassandra 3.11 JARファイル(
TRANLOGOPTIONS CDCREADERSDKVERSION 3.11
およびJVMCLASSPATH
構成)を使用することをお薦めします。 - Apache Cassandra 3.9 SDK
-
Extractパラメータ・ファイル:
EXTRACT groupname TRANLOGOPTIONS CDCREADERSDKVERSION 3.9 TRANLOGOPTIONS CDCLOGDIRTEMPLATE /path/to/data/cdc_raw SOURCEDB nodeaddress VAM libggbigdata_vam.so EXTTRAIL trailprefix TABLE *.*;
GLOBALSパラメータ・ファイル:
OGGSOURCE CASSANDRA CLUSTERCONTACTPOINTS nodeadresses JVMCLASSPATH ggjava/ggjava.jar:/path/to/cassandra-driver-core/3.3.1/cassandra-driver-core-3.3.1.jar:dirprm:/path/to/apache-cassandra-3.9/lib/*:/path/to/gson/2.3/gson-2.3.jar:/path/to/jsch/0.1.54/jsch-0.1.54.jar:/path/to/commons-lang3/3.5/commons-lang3-3.5.jar
27.8 RDBMSターゲットへの複製
Cassandra証跡ファイルからRDBMSターゲットにソースUPDATE
操作を複製する場合は、特に注意する必要があります。ソースUPDATE
操作はOracle GoldenGate証跡ファイルにINSERT
レコードとして出現します。ソースUPDATE
操作がターゲット・データベースでINSERT
操作として適用されている場合、Replicatが異常終了することがあります。
次のオプションがあります。
-
OVERRIDEDUPS
: ソース・データベースに数多くのINSERT
操作とわずかなUPDATE
操作が含まれることが想定される場合は、OVERRIDEDUPS
をお薦めします。少数のソースUPDATE
操作の複製中に、Replicatが重複キー・エラーから回復できます。OVERRIDEDUPS
\NOOVERRIDEDUPS
を参照してください。
-
UPDATEINSERTS
とINSERTMISSINGUPDATES
: ソース・データベースに数多くのUPDATE
操作とわずかなINSERT
操作が含まれることが想定される場合は、この構成を使用します。この構成では、Replicatの回復する必要がある欠落行エラーが少なくなり、スループットの向上につながります。UPDATEINSERTS
|NOUPDATEINSERTS
とINSERTMISSINGUPDATES
|NOINSERTMISSINGUPDATES
を参照してください。
-
ターゲット表で重複行を受け入れることができる場合や重複行でReplicatを異常終了させる場合、追加の構成は必要ありません。
BATCHSQL
を使用するようにReplicatを構成した場合、バッチ・モードで重複行エラーまたは欠落行エラーが発生することがあります。このエラーによってReplicatのスループットが減少しますが、Replicatは、これらのエラーから自動的に回復します。ソース操作のほとんどがINSERTS
である場合は、BATCHSQL
が適切です。
27.9 静的な列のパーティション更新または挿入
ソースCassandra表に静的な列が含まれる場合は、表内にあるすべてのクラスタリング・キー列をスキップすることによって、静的な列値を変更できます。
たとえば:
create table ks_demo_rep1.nls_staticcol
(
teamname text,
manager text static,
location text static,
membername text,
nationality text,
position text,
PRIMARY KEY ((teamname), membername)
)
WITH cdc=true;
insert into ks_demo_rep1.nls_staticcol (teamname, manager, location) VALUES ('Red Bull', 'Christian Horner', '<unknown>
挿入CQL
には、クラスタリング・キーmembername
が欠落しています。このような操作は、パーティション挿入となります。
同様に、パーティション更新操作であるCQL
のWHERE
句で、パーティション・キーのみを使用して静的な列を更新することもできます。Cassandra Extractでは、キー列が欠落しているINSERT
またはUPDATE
操作を証跡に書き込むことができません。これは、パーティションのINSERT
またはUPDATE
操作が検出されると異常終了します。
27.10 パーティション削除
Cassandra表には、1つ以上のパーティション・キー列およびクラスタリング・キー列で構成される主キーが含まれている可能性があります。WHERE
句からのクラスタリング・キー列をスキップすることによってCassandra表でDELETE
操作が実行される場合、パーティション削除操作が行われます。
たとえば:
create table ks_demo_rep1.table1
(
col1 ascii, col2 bigint, col3 boolean, col4 int,
PRIMARY KEY((col1, col2), col4)
) with cdc=true;
delete from ks_demo_rep1.table1 where col1 = 'asciival' and col2 = 9876543210; /** skipped clustering key column col4 **/
Cassandra Extractはキー列が欠落しているDELETE
操作を証跡に書き込むことができず、パーティションDELETE
操作の検出で異常終了します。
27.11 セキュリティと認証
-
Cassandra Extractはユーザー名/パスワード・ベースの認証およびSSL認証を使用してCassandraクラスタに接続できます。
-
Kerberos対応Cassandraクラスタへの接続は、このリリースではサポートされていません。
27.11.1 SSLの構成
SSLを有効にするには、SSLパラメータをGLOBALS
ファイルまたはExtractパラメータ・ファイルに追加します。さらに、JavaおよびCPPドライバに別の構成が必要です。CDC構成リファレンスを参照してください。
Javaドライバ用のSSL構成
JVMBOOTOPTIONS - Djavax.net.ssl.trustStore=/path/to/SSL/truststore.file - Djavax.net.ssl.trustStorePassword=password - Djavax.net.ssl.keyStore=/path/to/SSL/keystore.file - Djavax.net.ssl.keyStorePassword=password
キーストアおよびトラストストアの証明書は、次の手順に従って生成できます。
https://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/secureSSLIntro.html
Cassandra CPPドライバ用のSSL構成
SSL構成を操作するには、次のパラメータをOracle GoldenGateのGLOBALS
ファイルまたはExtractパラメータ・ファイルに追加する必要があります。
CPPDRIVEROPTIONS SSL PEMPUBLICKEYFILE /path/to/PEM/formatted/public/key/file/cassandra.pem CPPDRIVEROPTIONS SSL PEERCERTVERIFICATIONFLAG 0
この構成は、SSLが有効になっているCassandraクラスタに接続するために必要です。また、これらの設定をcassandra.yaml
ファイルに追加する必要があります。
client_encryption_options:
enabled: true
# If enabled and optional is set to true encrypted and unencrypted connections are handled.
optional: false
keystore: /path/to/keystore
keystore_password: password
require_client_auth: false
PEM形式の証明書は、次の手順に従って生成できます。
https://docs.datastax.com/en/developer/cpp-driver/2.8/topics/security/ssl/
親トピック: セキュリティと認証
27.12 CDCコミット・ログ・ファイルのクリーン・アップ
使用していないCDCコミット・ログ・ファイルをパージするには、Cassandra CDCコミット・ログ・パージャ・プログラムを使用します。
詳細は、「パージ・ユーティリティの実行方法」を参照してください。
- Cassandra CDCコミット・ログ・パージャ
ステージングされたCDCコミット・ログ・ファイルをパージするためのCassandraハンドラのパージ・ユーティリティ。Cassandra Extractは、各ノードのCDCコミット・ログ・ファイル($CASSANDRA/data/cdc_raw
にあります)を処理のためにステージング・ディレクトリに移動します。
27.12.1 Cassandra CDCコミット・ログ・パージャ
ステージングされたCDCコミット・ログ・ファイルをパージするためのCassandraハンドラのパージ・ユーティリティ。Cassandra Extractは、各ノードのCDCコミット・ログ・ファイル($CASSANDRA/data/cdc_raw
にあります)を処理のためにステージング・ディレクトリに移動します。
cdc_raw
コミット・ログ・ディレクトリが/path/to/cassandra/home/data/cdc_raw
の場合、ステージング・ディレクトリは/path/to/cassandra/home/data/cdc_raw/../cdc_raw_staged
になります。CDCコミット・ログ・パージャは、次のロジックに基づいてcdc_raw_staged
内にあるファイルをパージします。
パージ・プログラムは、oggdirディレクトリのdirchk/<EXTGRP>_casschk.json
の下にある次のすべてのJSONチェックポイント・ファイルをスキャンします。dirchkの下のサンプルJSONファイルは次のようになります。
{
"start_timestamp": -1,
"sequence_id": 34010434,
"updated_datetime": "2018-04-19 23:24:57.164-0700",
"nodes": [
{ "address": "10.247.136.146", "offset": 0, "id": 0 }
,
{ "address": "10.247.136.142", "file": "CommitLog-6-1524110205398.log", "offset": 33554405, "id": 1524110205398 }
,
{ "address": "10.248.10.24", "file": "CommitLog-6-1524110205399.log", "offset": 33554406, "id": 1524110205399 }
]
}
パージ・プログラムは、JSONチェックポイント・ファイル内のノード・アドレスごとにCDCファイル名とIDを取得します。JSONチェックポイント・ファイルから取得したIDごとに、パージ・プログラムは、ステージングされたCDCコミット・ログ・ディレクトリを調べて、チェックポイントのJSONファイルで取得したIDより小さいIDを持つコミット・ログ・ファイルをパージします。
例:
JSONファイルに、1524110205398のIDがあるとします。
CDCステージング・ディレクトリには、CommitLog-6-1524110205396.log
、CommitLog-6-1524110205397.log
およびCommitLog-6-1524110205398.log
とういファイルがあります。
CDCステージング・ディレクトリから導出されるIDは、1524110205396、1524110205397および1524110205398です。パージ・ユーティリティは、JSONファイルから読み取ったID 1524110205398より小さいIDのCDCステージング・ディレクトリ内のファイルをパージします。ID 1524110205396および524110205397に関連付けられているファイルがパージされます。
- パージ・ユーティリティの実行方法
- 引数cassCommitLogPurgerConfFile
- 引数purgeInterval
オプションの引数purgeInterval
を設定すると、デーモンとしてプロセスを実行するように構成できます。 - プログラムを実行するコマンド
親トピック: CDCコミット・ログ・ファイルのクリーン・アップ
27.12.1.1 パージ・ユーティリティの実行方法
27.12.1.1.1 このプログラムの実行に必要なサード・パーティ・ライブラリ
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.54</version> <scope>provided</scope> </dependency>
親トピック: パージ・ユーティリティの実行方法
27.12.1.1.2 実行時引数
実行するには、ユーティリティ・クラスCassandraCommitLogPurger
に必須の実行時引数cassCommitLogPurgerConfFile
が必要になります。
CassandraCommitLogPurger
クラスに使用可能な実行時引数は次のとおりです。
[required] --cassCommitLogPurgerConfFile=path to config.properties
[optional] --purgeInterval=1
親トピック: パージ・ユーティリティの実行方法
27.12.1.2 引数cassCommitLogPurgerConfFile
cassCommitLogPurgerConfFile
引数は、次の必須フィールドを含む構成ファイルを取り込みます。
表27-1 引数cassCommitLogPurgerConfFile
パラメータ | 説明 |
---|---|
fileSystemType | デフォルト: local
必須: はい 有効な値: remote/ local 説明: クラスタ内のすべてのライブ・ノードで、SFTPまたはNFSを通じてCDCステージング済コミット・ログにアクセスできます。 |
chkDir | デフォルト: なし
必須: はい 有効な値: チェックポイント・ディレクトリのパス説明: |
cdcStagingDir | デフォルト: なし
必須: はい 有効な値: ステージング・ディレクトリのパス説明: CDCコミット・ログが存在するCassandraステージング・ディレクトリの場所。たとえば、 |
userName | デフォルト: なし
必須: いいえ 有効な値: 有効なSFTP認証ユーザー名説明: サーバーに接続するSFTPユーザー名。 |
password | デフォルト: なし
必須: いいえ 有効な値: 有効なSFTP認証パスワード説明: サーバーに接続するSFTPパスワード。 |
port | デフォルト: 22
必須: いいえ 有効な値: 有効なSFTP認証ポート説明: SFTPポート番号 |
privateKey |
デフォルト: なし 必須: いいえ 有効な値: privateKeyファイルへの有効なパス説明: 秘密キーは認証の実行に使用され、パスワードの指定なしでログインできます。 |
passPhase |
デフォルト: なし 必須: いいえ 有効な値: privateKeyの有効なパスワード説明: 通常、秘密キーはパスワードで保護されています。これが指定されている場合は、 |
親トピック: Cassandra CDCコミット・ログ・パージャ
27.12.1.2.1 ローカル・ファイル・システムのサンプルconfig.properties
fileSystemType=local chkDir=apache-cassandra-3.11.2/data/chkdir/ cdcStagingDir=apache-cassandra-3.11.2/data/$nodeAddress/commitlog/
27.12.1.3 引数purgeInterval
オプションの引数purgeInterval
を設定すると、デーモンとしてプロセスを実行するように構成できます。
この引数は、クリーン・アップの発生間隔を表す整数値です。たとえば、purgeInterval
が1に設定されている場合、プロセスは毎日プロセスの開始時に実行されます。
親トピック: Cassandra CDCコミット・ログ・パージャ
27.12.1.4 プログラムを実行するコマンド
java -cp <OGG_HOME>/ggjava/resources/lib/*:<OGG_HOME>/thirdparty/cass/jsch-0.1.54.jar oracle.goldengate.cassandra.commitlogpurger.CassandraCommitLogPurger --cassCommitLogPurgerConfFile ogghome/cassandraPurgeUtil/commitlogpurger.properties --purgeInterval 1
<OGG_HOME>/ggjava/resources/lib/*
は、パージャ・ユーティリティが配置されているディレクトリです。<OGG_HOME>/thirdparty/cass/jsch-0.1.54.jar
は、パージャ・プログラムを実行するための依存jarです。--cassCommitLogPurgerConfFile
および--purgeInterval
は、2つの実行時引数です。
次に、コミット・ログ・パージャ・ユーティリティを実行するサンプル・スクリプトを示します。
#!/bin/bash echo "fileSystemType=remote" > commitlogpurger.properties echo "chkDir=dirchk" >> commitlogpurger.properties echo "cdcStagingDir=data/cdc_raw_staged" >> commitlogpurger.properties echo "userName=username" >> commitlogpurger.properties echo "password=password" >> commitlogpurger.properties java -cp ogghome/ggjava/resources/lib/*:ogghome/thirdparty/cass/jsch-0.1.54.jar oracle.goldengate.cassandra.commitlogpurger.CassandraCommitLogPurger --cassCommitLogPurgerConfFile commitlogpurger.properties --purgeInterval 1
親トピック: Cassandra CDCコミット・ログ・パージャ
27.13 複数のExtractのサポート
単一のOracle GoldenGate for Big Dataインストールで、同じCassandraクラスタに接続するように複数のExtractグループを構成できます。
複数のExtractグループを実行するには、次のようにします。
-
1つ(唯一)のExtractグループを、Cassandraノードの
cdc_raw
ディレクトリ内のコミット・ログ・ファイルをステージング・ディレクトリに移動するように構成できます。movecommitlogstostagingdir
パラメータはデフォルトで有効になっているので、このExtractグループに追加の構成は必要ありません。 -
他のすべてのExtractグループは、Extractパラメータ(
.prm
)ファイルでnomovecommitlogstostagingdir
パラメータを指定して構成する必要があります。
27.14 CDC構成リファレンス
次のプロパティは、Cassandraチェンジ・データ・キャプチャで使用されます。
プロパティ | 必須/オプション | 場所 | デフォルト | 説明 |
---|---|---|---|---|
|
オプション |
パラメータ( |
|
初期ロード・プロセス時にのみ使用します。
|
|
オプション |
パラメータ( |
最小値は 最大値は |
初期ロード・プロセス時にのみ使用します。 データベース・サーバーに送信される各リクエストに対して、ドライバがフェッチを試みるデータの行数を指定します。 パラメータ値は、データベース構成ファイル 初期ロードにおけるExtractのパフォーマンスを最適化するために、このパラメータ値を5000に設定することをお薦めします。 |
|
必須 |
パラメータ( |
なし |
CDCコミット・ログのディレクトリ・パス・テンプレート。テンプレートには、必要に応じて、各ノードのアドレスに解決される |
|
オプション |
パラメータ( |
なし |
コミット・ログ・ファイルをプルして転送するセキュア・ファイル転送プロトコル(SFTP)の接続詳細。次の1つ以上のオプションを使用できます。 |
|
オプション |
|
|
Cassandraクラスタへの接続に使用されるノードのカンマ区切りリスト。少なくとも1つのノード・アドレスを指定する必要があります。パラメータ・オプションは、次のとおりです。 |
|
オプション |
パラメータ( |
|
CDCリーダー・キャプチャAPIのSDKバージョン。 |
|
オプション |
パラメータ( |
|
|
|
オプション |
パラメータ( |
|
CDCコミット・ログ・ファイルの抽出後処理をパージします。この値が |
|
オプション |
|
なし |
Java仮想マシンのブート・オプション。複数のオプションは空白文字で区切られます。 |
|
必須 |
|
なし |
Java仮想マシンのクラスパス。任意のディレクトリ内のすべてのJARファイルと一致するように、ワイルドカードとしてアスタリスク( |
|
必須 |
なし |
なし |
CDCキャプチャまたはデータベースの問合せのソース・データベース。有効な値は |
|
必須 |
パラメータ( |
なし |
Cassandraクラスタへの接続、およびキャプチャした表のメタデータの問合せに使用される単一のCassandraノード・アドレス。 |
|
オプション |
パラメータ( |
|
この値が |
|
オプション |
パラメータ( |
|
この値が |
|
オプション |
パラメータ( |
|
デフォルトで有効になっており、Extractグループに対し、Cassandraノードの |
|
オプション |
GLOBALSファイルまたはExtractパラメータ( |
|
接続時の基本的なSSLサポートに使用します。これを有効にする場合、Javaシステム・プロパティによる追加のJSSE構成が必要となります。 ノート: 次のSSLプロパティは |
|
オプション |
GLOBALSファイルまたはExtractパラメータ( 完全修飾名による絶対パスを示す文字列。このファイルはSSL接続用である必要があります。 |
なし。 |
ピアの証明書の検証に使用されるPEM形式の公開キー・ファイルであることを示します。このプロパティは、一方向ハンドシェイクまたは基本的なSSL接続に必要です。 |
|
オプション |
GLOBALSファイルまたはExtractパラメータ( |
|
有効にすると、クライアントとサーバー間の双方向SSL暗号化を示します。PEM形式の証明書によってクライアントとサーバーの両方を認証する必要があります。このプロパティには、 |
|
オプション |
GLOBALSファイルまたはExtractパラメータ( 完全修飾名による絶対パスを示す文字列。このファイルはSSL接続用である必要があります。 |
なし。 |
クライアントの証明書の検証に使用されるPEM形式の公開キー・ファイル名に使用します。これは、 |
|
オプション |
GLOBALSファイルまたはExtractパラメータ( 完全修飾名による絶対パスを示す文字列。このファイルはSSL接続用である必要があります。 |
なし。 |
クライアントの証明書の検証に使用されるPEM形式の秘密キー・ファイル名に使用します。これは、 |
|
オプション |
GLOBALSファイルまたはExtractパラメータ( 文字列 |
なし。 |
クライアントの証明書の検証に使用されるPEM形式の秘密キー・ファイルのパスワードを設定します。これは、秘密キー・ファイルがパスワードで保護されている場合、必須です。 |
|
オプション |
GLOBALSファイルまたはExtractパラメータ( 整数 |
|
ピアの証明書で必要な検証を設定します。範囲は0–4です。 0–証明書アイデンティティの検証を無効にします。 1–ピア証明書を検証します 2–ピア・アイデンティティを検証します 3–使用されないため、証明書アイデンティティの検証の無効化と同様です。 4–ドメイン名によってピア・アイデンティティを検証します |
|
オプション |
GLOBALSファイルまたはExtractパラメータ( |
|
逆IP参照を使用したIPアドレスのホスト名の取得を有効にします。 |
27.15 トラブルシューティング
Cassandra Extractプロセスによってデータがキャプチャされません。
-
Cassandraデータベースは、アクティブなコミット・ログ・ファイルからCDCコミット・ログ・ファイルにデータをフラッシュしていません。フラッシュは、Cassandraクラスタのロードに依存します。
-
Cassandra ExtractではCDCコミット・ログ・ファイルからのみデータをキャプチャします。
-
ソース表のCDCプロパティを確認します。ソース表のCDCプロパティは
true
に設定する必要があります。 -
TRANLOGOPTIONS CDCREADERSDKVERSION
3.9パラメータが使用され、JVMCLASSPATH
がCassandra 3.10または3.11のJARファイルを指すように構成されている場合、データはキャプチャされません。
エラー: OGG-01115 Function getInstance not implemented.
-
次の行が
GLOBALS
ファイルから欠落しています。OGGSOURCE CASSANDRA
-
GLOBALS
ファイルがOracle GoldenGateディレクトリ内にありません。
エラー: Cassandraクラスタに接続できません。例外: com.datastax.driver.core.exceptions.NoHostAvailableException
これは、Cassandraクラスタへの接続が失敗したことを示します。
次のパラメータを確認します。
CLUSTERCONTACTPOINTS
エラー: スレッド"main" java.lang.NoClassDefFoundError: oracle/goldengate/capture/cassandra/CassandraCDCProcessManager内の例外
GLOBALS
ファイルのJVMCLASSPATH
パラメータを確認します。
エラー: oracle.goldengate.util.Util - オブジェクトの構築時にメソッドを呼び出すことができません。クラス"oracle.goldengate.capture.cassandracapture311.SchemaLoader3DOT11"のオブジェクトを作成できません。原因: java.lang.NoSuchMethodError: org.apache.cassandra.config.DatabaseDescriptor.clientInitialization()V
Cassandra SDKバージョン構成に不一致があります。TRANLOGOPTIONS CDCREADERSDKVERSION 3.11
パラメータが使用されているため、JVMCLASSPATH
にCassandra 3.9 JARファイル・パスが存在する可能性があります。
エラー: OGG-25171 Trail file '/path/to/trail/gg' is remote.Only local trail allowed for this extract.
Cassandra Extractは、ローカル証跡ファイルに書き込むようにのみ構成する必要があります。Cassandra Extractの証跡ファイルを追加する場合は、EXTTRAIL
オプションを使用します。たとえば:
ADD EXTTRAIL ./dirdat/z1, EXTRACT cass
エラー: OGG-868エラー・メッセージまたはOGG-4510エラー・メッセージ
原因は、次のいずれかです。
-
不明なユーザーまたは無効なパスワード
-
不明なノード・アドレス
-
メモリーの不足
別の原因として、Cassandraデータベースへの接続が切断された可能性があります。エラー・メッセージが、発生したデータベース・エラーを示します。
エラー: OGG-251712 Keyspace keyspacename does not exist in the database.
この問題は次の条件に起因する可能性があります。
-
Extract初期ロード・プロセス時に、Cassandraデータベースから
KEYSPACE keyspacename
を削除した可能性があります。 -
KEYSPACE keyspacename
がCassandraデータベースに存在しません。
エラー: OGG-25175 Unexpected error while fetching row.
これは、初期ロード・プロセス時にCassandraデータベースへの接続が切断された場合に発生する可能性があります。
エラー: Server-side warning: Read 915936 live rows and 12823104 tombstone cells for query SELECT * FROM keyspace.table(see tombstone_warn_threshold)
初期ロードのDBOPTIONS FETCHBATCHSIZE
パラメータの値が、Cassandraデータベース構成パラメータtombstone_warn_threshold
よりも大きい場合に発生する可能性が高くなります。
この問題回避するには、tombstone_warn_threshold
の値を増やすか、またはDBOPTIONS FETCHBATCHSIZE
値を減らします。
Cassandra Extractの証跡でレコードが重複しています。
複数ノードのCassandraクラスタに対する内部テストによって、Cassandra CDCコミット・ログ・ファイルで重複レコードの可能性があることが明らかになりました。Cassandraコミット・ログ・ファイル内の重複は、大量の書込み並列化、ノードでの書込みエラーおよびCassandraノードでの複数回の再試行がある場合には一般的です。この場合、Cassandra証跡ファイルに重複レコードがあることが予想されます。
Extractレポート・ファイルでのJSchExceptionまたはSftpException
SFTP資格証明(user
、password
およびprivatekey
)が正しいことを確認します。SFTPユーザーに、Cassandraクラスタ内の各ノードのcdc_raw
ディレクトリに対する読取り/書込み権限があることを確認します。
ERROR o.g.c.c.CassandraCDCProcessManager - Exception during creation of CDC staging directory [{}]java.nio.file.AccessDeniedException
ExtractプロセスにCDCコミット・ログ・ステージング・ディレクトリを作成する権限がありません。たとえば、cdc_raw
コミット・ログ・ディレクトリが/path/to/cassandra/home/data/cdc_raw
である場合、ステージング・ディレクトリは/path/to/cassandra/home/data/cdc_raw/../cdc_raw_staged
になります。
Extractレポート・ファイルに大量のDEBUGログ文が表示されます
本番システムでは、デバッグ・ロギングを有効にする必要はありません。INFO
レベルのロギングを使用するには、GLOBALS
ファイルにこのパラメータが含まれていることを確認します。
JVMBOOTOPTIONS -Dlogback.configurationFile=AdapterExamples/big-data/cassandracapture/logback.xml
Oracle Golden Gate Cassandra ExtractでSSLを有効にする場合は、GLOBALSファイルまたはExtractパラメータ・ファイルでSSLを有効にする必要があります。
SSLキーワードがない場合、ExtractではSSLなしで接続するものとみなされます。したがって、Cassandra.yaml
ファイルにSSL構成エントリがある場合、接続は失敗します。
SSLが有効になっていて一方向ハンドシェイクである場合
CPPDRIVEROPTIONS SSL PEMPUBLICKEYFILE /scratch/testcassandra/testssl/ssl/cassandra.pem
プロパティを指定する必要があります。
このプロパティがない場合、Extractでは次のエラーが生成されます。
2018-06-09 01:55:37 ERROR OGG-25180 The PEM formatted public key file used to verify the peer's certificate is missing.SSLが有効になっている場合は、Oracle GoldenGateのGLOBALSファイルまたはExtractパラメータ・ファイルでPEMPUBLICKEYFILEを設定する必要があります。
SSLが有効になっていて双方向ハンドシェイクである場合
SSL双方向ハンドシェイクには、次のプロパティを指定する必要があります。
CPPDRIVEROPTIONS SSL ENABLECLIENTAUTH CPPDRIVEROPTIONS SSL PEMCLIENTPUBLICKEYFILE /scratch/testcassandra/testssl/ssl/datastax-cppdriver.pem CPPDRIVEROPTIONS SSL PEMCLIENTPRIVATEKEYFILE /scratch/testcassandra/testssl/ssl/datastax-cppdriver-private.pem CPPDRIVEROPTIONS SSL PEMCLIENTPRIVATEKEYPASSWD cassandra
さらに、次の点を考慮してください。
-
ENABLECLIENTAUTH
がない場合、Extractでは一方向ハンドシェイクであるとみなされるため、PEMCLIENTPRIVATEKEYFILE
およびPEMCLIENTPRIVATEKEYFILE
は無視されます。cassandra.yaml
ファイルでrequire_client_auth
がtrue
に設定されている必要があるため、次のエラーが発生します。2018-06-09 02:00:35 ERROR OGG-00868 No hosts available for the control connection.
-
ENABLECLIENTAUTH
が使用され、PEMCLIENTPRIVATEKEYFILE
がない場合は、次のエラーが発生します。2018-06-09 02:04:46 ERROR OGG-25178 The PEM formatted private key file used to verify the client's certificate is missing. For two way handshake or if ENABLECLIENTAUTH is set, then it is mandatory to set PEMCLIENTPRIVATEKEYFILE in your Oracle GoldenGate GLOBALS file or in Extract parameter file.
-
ENABLECLIENTAUTH
が使用され、PEMCLIENTPUBLICKEYFILE
がない場合は、次のエラーが発生します。2018-06-09 02:06:20 ERROR OGG-25179 The PEM formatted public key file used to verify the client's certificate is missing. For two way handshake or if ENABLECLIENTAUTH is set, then it is mandatory to set PEMCLIENTPUBLICKEYFILE in your Oracle GoldenGate GLOBALS file or in Extract parameter file.
-
クライアント秘密キー・ファイルの生成時にパスワードが設定されている場合、このエラーを回避するために
PEMCLIENTPRIVATEKEYPASSWD
を追加する必要があります。2018-06-09 02:09:48 ERROR OGG-25177 The SSL certificate: /scratch/jitiwari/testcassandra/testssl/ssl/datastax-cppdriver-private.pem can not be loaded. Unable to load private key.
-
指定された絶対パスにPEMファイルがない場合は、次のエラーが発生します。
2018-06-09 02:12:39 ERROR OGG-25176 Can not open the SSL certificate: /scratch/jitiwari/testcassandra/testssl/ssl/cassandra.pem.
com.jcraft.jsch.JSchException: UnknownHostKey
この問題でExtractプロセスが異常終了した場合は、SSH known-hosts
ファイルにCassandraノード・アドレスの一部または全体がない可能性があります。詳細は、「CassandraノードへのSSH接続の設定」を参照してください。
一般的なSSLエラー
次の一般的なエラーを検討してみます。
-
ExtractまたはGLOBALSファイルでSSL必須パラメータをすべて有効にしたのに、
cassandra.yaml
ファイルでSSLが構成されていない場合、SSL接続が失敗する可能性があります。 -
PEMファイルの絶対パスまたは修飾名が正しくない可能性があります。PEMファイルの格納場所にアクセス問題がある可能性があります。
-
クライアント秘密キー・ファイルの生成中に追加されたパスワードが正しくないか、Extractパラメータ・ファイルまたはGLOBALSファイルで有効になっていない可能性があります。