18 Cassandra用のOracle GoldenGateキャプチャの使用

Oracle GoldenGateキャプチャ(Extract)を使用して、Apache Cassandraデータベースから変更を取得する方法について説明します。

トピック:

18.1 概要

Apache Cassandraは、大量のデータを格納するために設計されたNoSQLデータベース管理システムです。Cassandraクラスタ構成によって、複数のマシン間でデータの水平スケーリングおよびレプリケーションが行われます。Cassandraクラスタ内の複数のノードにデータを複製することによって、高可用性が実現し、シングル・ポイント障害を防ぐことができます。Apache Cassandraはオープン・ソースで、低価格のコモディティ・ハードウェア上で実行できるように設計されています。

Cassandraでは、原子性、整合性、独立性および永続性に関して、従来のリレーショナル・データベース管理システム(RDBMS)の原理が緩和されています。Cassandraの実装を検討する場合は、従来のRDBMSとの相違点と、その相違点が個々のユースケースにどのように影響するかを理解しておくことが重要です。

Cassandraでは最終的に整合性が保たれます。最終的整合性モデルでは、特定の行のデータの状態にアクセスすると、最新の変更によって定義されたとおりに、その行のデータの最新状態を最終的には返します。ただし、行の状態の作成および変更と、その行の状態を問い合せたときの戻り値の間に、レイテンシ期間が生じる場合があります。最終的整合性には、Cassandra構成およびCassandraクラスタが現在置かれているワークロードのレベルに応じてレイテンシ期間が予測されるという利点があります。http://cassandra.apache.org/を参照してください。

データ型のサポートを確認し、「Cassandraのデータ型について」を参照してください。

18.2 Cassandraチェンジ・データ・キャプチャの設定

前提条件

  • Apache Cassandraクラスタでは、少なくとも1つのノードが稼働している必要があります。

  • クラスタ内のすべてのライブ・ノード上でのCDCコミット・ログ・ファイルへの読取りおよび書込みアクセスは、SFTPまたはNFSを介して行われます。

  • Cassandraクラスタ内のすべてのノードで、cassandra.yaml構成ファイルのcdc_enabledパラメータがtrueに設定されている必要があります。

  • すべてのCassandraノードについて、cassandra.yamlnum_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;

18.2.1 データ型

サポートされている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

18.2.2 Cassandraデータベースの操作

サポートされている操作

サポートされる操作は次のとおりです。

  • INSERT

  • UPDATE (INSERTとしてキャプチャ)

  • DELETE

サポートされない操作

TRUNCATE DDL (CREATEALTERおよびDROP)操作はサポートされていません。Cassandraコミット・ログ・ファイルはUPDATEまたはDELETE操作の操作前イメージを記録しないため、キャプチャされた操作には操作前イメージがありません。競合の検出や解決など、操作前イメージのレコードに依存するOracle GoldenGate機能は使用できません。

18.3 重複排除

Cassandraクラスタの機能の1つは、高可用性です。高可用性をサポートするために、表のデータの複数の冗長コピーがクラスタ内の異なるノードに格納されます。Oracle GoldenGate for Big Data Cassandraキャプチャでは、重複行が自動的にフィルタ処理で除外されます(重複排除)。重複排除はデフォルトでアクティブとなります。データがキャプチャされて重複レコードが推奨されないターゲット(RDBMSターゲットなど)に適用される場合は、重複排除を使用することをお薦めします。

18.4 トポロジの変更

クラスタがライブになったまま、Cassandraノードのステータスが変化(トポロジの変更)する場合があります。Oracle GoldenGate for Big Data Cassandraキャプチャは、ノードのステータスの変更を検出し、必要に応じてそれらの変更に対応できます。Cassandraキャプチャ・プロセスは、クラスタで実行されている次のイベントを検出できます。

  • ノードの停止および起動。

  • ノードのデコミッションおよびコミッション。

  • 新しいキースペースおよび表の作成。

トポロジが変更されたため、キャプチャ・プロセスはアクティブなプロデューサ・ノードが停止したことを検出した場合は、使用可能なレプリカ・ノードから欠落した行を回復しようとします。このプロセス中に、一部の行でデータの重複が発生する可能性があります。これは、トポロジの変更による一時的なデータの重複です。トポロジの変更への対処の詳細は、「トラブルシューティング」を参照してください。

18.5 CDCログでのデータの可用性

Cassandra CDC APIは、CDCディレクトリのコミット・ログ・ファイルからのデータのみを読み取ることができます。アクティブなコミット・ログ・ディレクトリ内のデータがCDCコミット・ログ・ディレクトリにアーカイブされる(移動する)とき、レイテンシが発生します。

Cassandraキャプチャ・プロセスの入力データ・ソースはCDCコミット・ログ・ディレクトリです。キャプチャされるデータに遅延が発生する可能性があり、これは、主に、キャプチャ・プロセスでまだ認識されるようになっていないコミット・ログ・ファイルがあることによるものです。

アクティビティの多い本番クラスタでは、データがアクティブなコミット・ログ・ディレクトリからマイクロ秒のオーダーでCDCコミット・ログ・ディレクトリにアーカイブされるため、このレイテンシが最小化されます。

18.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 

18.7 チェンジ・データ・キャプチャのExtractの使用

$HOME/AdapterExamples/big-data/cassandracaptureOracle GoldenGate for Big Dataインストール・ディレクトリから.prmファイルの例を確認します。

  1. 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
    
  2. Extractを構成するには、$HOME/AdapterExamples/big-data/cassandracaptureのOracle GoldenGate for Big Dataインストール・ディレクトリの.prmファイルの例を参照してください。

  3. 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’
    
  4. 表のトランザクション・データのロギングを管理します。

    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
    
  5. GLOBALSパラメータ・ファイルの最後に次の行を追加します。

    JVMBOOTOPTIONS -Dlogback.configurationFile=AdapterExamples/big-data/cassandracapture/logback.xml
  6. 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
    

18.8 RDBMSターゲットへの複製

Cassandra証跡ファイルからRDBMSターゲットにソースUPDATE操作を複製する場合は、特に注意する必要があります。ソースUPDATE操作はOracle GoldenGate証跡ファイルにINSERTレコードとして出現します。ソースUPDATE操作がターゲット・データベースでINSERT操作として適用されている場合、Replicatが異常終了することがあります。

次のオプションがあります。

  • OVERRIDEDUPS: ソース・データベースに数多くのINSERT操作とわずかなUPDATE操作が含まれることが想定される場合は、OVERRIDEDUPSをお薦めします。少数のソースUPDATE操作の複製中に、Replicatが重複キー・エラーから回復できます。OVERRIDEDUPS \ NOOVERRIDEDUPSを参照してください。

  • UPDATEINSERTSINSERTMISSINGUPDATES: ソース・データベースに数多くのUPDATE操作とわずかなINSERT操作が含まれることが想定される場合は、この構成を使用します。この構成では、Replicatの回復する必要がある欠落行エラーが少なくなり、スループットの向上につながります。UPDATEINSERTS | NOUPDATEINSERTSINSERTMISSINGUPDATES | NOINSERTMISSINGUPDATESを参照してください。

  • ターゲット表で重複行を受け入れることができる場合や重複行でReplicatを異常終了させる場合、追加の構成は必要ありません。

BATCHSQLを使用するようにReplicatを構成した場合、バッチ・モードで重複行エラーまたは欠落行エラーが発生することがあります。このエラーによってReplicatのスループットが減少しますが、Replicatは、これらのエラーから自動的に回復します。ソース操作のほとんどがINSERTSである場合は、BATCHSQLが適切です。

18.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が欠落しています。このような操作は、パーティション挿入となります。

同様に、パーティション更新操作であるCQLWHERE句で、パーティション・キーのみを使用して静的な列を更新することもできます。Cassandra Extractでは、キー列が欠落しているINSERTまたはUPDATE操作を証跡に書き込むことができません。これは、パーティションのINSERTまたはUPDATE操作が検出されると異常終了します。

18.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操作の検出で異常終了します。

18.11 セキュリティと認証

  • Cassandra Extractはユーザー名/パスワード・ベースの認証およびSSL認証を使用してCassandraクラスタに接続できます。

  • Kerberos対応Cassandraクラスタへの接続は、このリリースではサポートされていません

18.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/

18.12 複数のExtractのサポート

単一のOracle GoldenGate for Big Dataインストールで、同じCassandraクラスタに接続するように複数のExtractグループを構成できます。

複数のExtractグループを実行するには、次のようにします。

  1. 1つ(唯一)のExtractグループを、Cassandraノードのcdc_rawディレクトリ内のコミット・ログ・ファイルをステージング・ディレクトリに移動するように構成できます。movecommitlogstostagingdirパラメータはデフォルトで有効になっているので、このExtractグループに追加の構成は必要ありません。

  2. 他のすべてのExtractグループは、Extractパラメータ(.prm)ファイルでnomovecommitlogstostagingdirパラメータを指定して構成する必要があります。

18.13 CDC構成リファレンス

次のプロパティは、Cassandraチェンジ・データ・キャプチャで使用されます。

プロパティ 必須/オプション 場所 デフォルト 説明

DBOPTIONS ENABLECASSANDRACPPDRIVERTRACE true

オプション

パラメータ(.prm)ファイルを抽出します。

false

初期ロード・プロセス時にのみ使用します。

trueに設定されている場合は、Cassandraドライバによって、すべてのAPIコールがdriver.logファイルに記録されます。このファイルは、Oracle GoldenGate for Big Dataインストール・ディレクトリに作成されます。このことはデバッグに役立ちます。

DBOPTIONS FETCHBATCHSIZE number

オプション

パラメータ(.prm)ファイルを抽出します。

1000

最小値は1です

最大値は100000です

初期ロード・プロセス時にのみ使用します。

データベース・サーバーに送信される各リクエストに対して、ドライバがフェッチを試みるデータの行数を指定します。

パラメータ値は、データベース構成ファイルcassandra.yamlのデータベース構成パラメータtombstone_warn_thresholdの値より小さくする必要があります。そのようにしないと、初期ロード・プロセスが失敗します。

初期ロードにおけるExtractのパフォーマンスを最適化するために、このパラメータ値を5000に設定することをお薦めします。

TRANLOGOPTIONS CDCLOGDIRTEMPLATE path

必須

パラメータ(.prm)ファイルを抽出します。

なし

CDCコミット・ログのディレクトリ・パス・テンプレート。テンプレートには、必要に応じて、各ノードのアドレスに解決される$nodeAddressメタ・フィールドを含めることができます。

TRANLOGOPTIONS SFTP options

オプション

パラメータ(.prm)ファイルを抽出します。

なし

コミット・ログ・ファイルをプルして転送するセキュア・ファイル転送プロトコル(SFTP)の接続詳細。次の1つ以上のオプションを使用できます。

USER user

SFTPユーザー名。

PASSWORD password

SFTPパスワード。

KNOWNHOSTSFILE file

セキュアなシェル(SSH)の既知のホスト・ファイルの場所。

LANDINGDIR dir

ローカル・マシン上のコミット・ログ・ファイルのSFTPランディング・ディレクトリ。

PRIVATEKEY file

SSH秘密キー・ファイル。

PASSPHRASE password

SSH秘密キーのパス・フレーズ。

PORTNUMBER portnumber

SSHポート番号。

CLUSTERCONTACTPOINTS nodes USER dbuser PASSWORD dbpassword

オプション

GLOBALSパラメータ・ファイル

127.0.0.1

Cassandraクラスタへの接続に使用されるノードのカンマ区切りリスト。少なくとも1つのノード・アドレスを指定する必要があります。パラメータ・オプションは、次のとおりです。

USER dbuser

デフォルトなし

オプション

データベースへの接続時に使用するユーザー名。

PASSWORD dbpassword

デフォルトなし

USERを使用する場合に必要になります。

データベースへの接続時に使用するユーザー・パスワード。

PORT <port number

デフォルトなし

オプション

データベースへの接続時に使用するポート。

TRANLOGOPTIONS CDCREADERSDKVERSION version

オプション

パラメータ(.prm)ファイルを抽出します。

3.11

CDCリーダー・キャプチャAPIのSDKバージョン。

ABENDONMISSEDRECORD | NOABENDONMISSEDRECORD

オプション

パラメータ(.prm)ファイルを抽出します。

true

trueに設定され、欠落しているレコードの可能性が検出されると、プロセスが停止し、診断情報が表示されます。通常、ノードが停止し、停止したノードの最後のレコードと一致するレコードを含むレプリカ・ノードをCDCリーダーが見つけることができない場合に検出されます。このパラメータをfalseに設定すると、処理を継続できます。シナリオに関する警告メッセージがログに記録されます。

TRANLOGOPTIONS CLEANUPCDCCOMMITLOGS

オプション

パラメータ(.prm)ファイルを抽出します。

false

CDCコミット・ログ・ファイルの抽出後処理をパージします。値がfalseに設定されている場合、CDCコミット・ログ・ファイルは、cdc_raw_processedディレクトリに移動されます。

JVMBOOTOPTIONS jvm_options

オプション

GLOBALSパラメータ・ファイル

なし

Java仮想マシンのブート・オプション。複数のオプションは空白文字で区切られます。

JVMCLASSPATH classpath

必須

GLOBALSパラメータ・ファイル

なし

Java仮想マシンのクラスパス。任意のディレクトリ内のすべてのJARファイルと一致するように、ワイルドカードとしてアスタリスク(*)を含めることができます。複数のパスはコロン(:)文字で区切られている必要があります。

OGGSOURCE source

必須

 

なし

CDCキャプチャまたはデータベースの問合せのソース・データベース。有効な値はCASSANDRAです。

SOURCEDB nodeaddress USERID dbuser PASSWORD dbpassword

必須

パラメータ(.prm)ファイルを抽出します。

なし

Cassandraクラスタへの接続、およびキャプチャした表のメタデータの問合せに使用される単一のCassandraノード・アドレス。

USER dbuser

デフォルトなし

オプション

データベースへの接続時に使用するユーザー名。

PASSWORD dbpassword

デフォルトなし

USERを使用する場合に必要になります。

データベースへの接続時に使用するユーザー・パスワード。

ABENDONUPDATERECORDWITHMISSINGKEYS | NOABENDONUPDATERECORDWITHMISSINGKEYS

オプション

パラメータ(.prm)ファイルを抽出します。

true

この値がtrueの場合、キー列が欠落しているUPDATE操作レコードが検出されると、プロセスが停止し、診断情報が表示されます。このパラメータをfalseに設定すると、処理を継続し、このレコードを証跡ファイルに書き込むことができます。シナリオに関する警告メッセージがログに記録されます。この操作はパーティション更新となります。「静的な列のパーティション更新または挿入」を参照してください。

ABENDONDELETERECORDWITHMISSINGKEYS | NOABENDONDELETERECORDWITHMISSINGKEYS

オプション

パラメータ(.prm)ファイルを抽出します。

true

この値がtrueの場合、キー列が欠落しているDELETE操作レコードが検出されると、プロセスが停止し、診断情報が表示されます。このパラメータをfalseに設定すると、処理を継続し、このレコードを証跡ファイルに書き込むことができます。シナリオに関する警告メッセージがログに記録されます。この操作はパーティション更新となります。「パーティション削除」を参照してください。

MOVECOMMITLOGSTOSTAGINGDIR | NOMOVECOMMITLOGSTOSTAGINGDIR

オプション

パラメータ(.prm)ファイルを抽出します。

true

デフォルトで有効になっており、Extractグループに対し、Cassandraノードのcdc_rawディレクトリ内のコミット・ログ・ファイルをコミット・ログ・ファイルのステージング・ディレクトリに移動するよう指示します。movecommitlogstostagingdirを有効にできるExtractグループは1つのみで、他のすべてのExtractグループはnomovecommitlogstostagingdirを指定してこれを無効にします。

SSL

オプション

GLOBALSファイルまたはExtractパラメータ(.prm)ファイル。

false

接続時の基本的なSSLサポートに使用します。これを有効にする場合、Javaシステム・プロパティによる追加のJSSE構成が必要となります。

注意:

次のSSLプロパティはCPPDRIVEROPTIONS SSLにあるため、機能するようにこのキーワードを他のSSLプロパティに追加する必要があります。

CPPDRIVEROPTIONS SSL PEMPUBLICKEYFILE cassadra.pem

オプション

GLOBALSファイルまたはExtractパラメータ(.prm)ファイル。

完全修飾名による絶対パスを示す文字列。このファイルはSSL接続用である必要があります。

なし。PEMPUBLICKEYFILEプロパティが指定されている場合を除き、値を指定する必要があります。

ピアの証明書の検証に使用されるPEM形式の公開キー・ファイルであることを示します。このプロパティは、一方向ハンドシェイクまたは基本的なSSL接続に必要です。

CPPDRIVEROPTIONS SSL ENABLECLIENTAUTH | DISABLECLIENTAUTH

オプション

GLOBALSファイルまたはExtractパラメータ(.prm)ファイル。

false

有効にすると、クライアントとサーバー間の双方向SSL暗号化を示します。PEM形式の証明書によってクライアントとサーバーの両方を認証する必要があります。このプロパティには、pemclientpublickeyfileプロパティとpemclientprivatekeyfileプロパティの設定も必要です。クライアントの秘密キーがパスワードで保護されている場合は、pemclientprivatekeypasswdを構成する必要があります。このプロパティをfalseに設定すると、双方向ハンドシェイクのクライアント認証が無効になります。

CPPDRIVEROPTIONS SSL PEMCLIENTPUBLICKEYFILE public.pem

オプション

GLOBALSファイルまたはExtractパラメータ(.prm)ファイル。

完全修飾名による絶対パスを示す文字列。このファイルはSSL接続用である必要があります。

なし。PEMCLIENTPUBLICKEYFILEプロパティが指定されている場合を除き、値を指定する必要があります。

クライアントの証明書の検証に使用されるPEM形式の公開キー・ファイル名に使用します。これは、CPPDRIVEROPTIONS SSL ENABLECLIENTAUTHまたは双方向ハンドシェイクを使用している場合、必須です。

CPPDRIVEROPTIONS SSL PEMCLIENTPRIVATEKEYFILE public.pem

オプション

GLOBALSファイルまたはExtractパラメータ(.prm)ファイル。

完全修飾名による絶対パスを示す文字列。このファイルはSSL接続用である必要があります。

なし。PEMCLIENTPRIVATEKEYFILEプロパティが指定されている場合を除き、値を指定する必要があります。

クライアントの証明書の検証に使用されるPEM形式の秘密キー・ファイル名に使用します。これは、CPPDRIVEROPTIONS SSL ENABLECLIENTAUTHまたは双方向ハンドシェイクを使用している場合、必須です。

CPPDRIVEROPTIONS SSL PEMCLIENTPRIVATEKEYPASSWD privateKeyPasswd

オプション

GLOBALSファイルまたはExtractパラメータ(.prm)ファイル。

文字列

なし。PEMCLIENTPRIVATEKEYPASSWDプロパティが指定されている場合を除き、値を指定する必要があります。

クライアントの証明書の検証に使用されるPEM形式の秘密キー・ファイルのパスワードを設定します。これは、秘密キー・ファイルがパスワードで保護されている場合、必須です。

CPPDRIVEROPTIONS SSL PEERCERTVERIFICATIONFLAG value

オプション

GLOBALSファイルまたはExtractパラメータ(.prm)ファイル。

整数

0

ピアの証明書で必要な検証を設定します。範囲は0–4です。

0: 証明書アイデンティティの検証を無効にします。

1: ピア証明書を検証します

2: ピア・アイデンティティを検証します

3: 使用されないため、証明書アイデンティティの検証の無効化と同様です。

4: ドメイン名によってピア・アイデンティティを検証します

CPPDRIVEROPTIONS SSL ENABLEREVERSEDNS

オプション

GLOBALSファイルまたはExtractパラメータ(.prm)ファイル。

false

逆IP参照を使用したIPアドレスのホスト名の取得を有効にします。

18.14 トラブルシューティング

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資格証明(userpasswordおよび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_authtrueに設定されている必要があるため、次のエラーが発生します。

    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.

一般的なSSLエラー

次の一般的なエラーを検討してみます。

  • ExtractまたはGLOBALSファイルでSSL必須パラメータをすべて有効にしたのに、cassandra.yamlファイルでSSLが構成されていない場合、SSL接続が失敗する可能性があります。

  • PEMファイルの絶対パスまたは修飾名が正しくない可能性があります。PEMファイルの格納場所にアクセス問題がある可能性があります。

  • クライアント秘密キー・ファイルの生成中に追加されたパスワードが正しくないか、Extractパラメータ・ファイルまたはGLOBALSファイルで有効になっていない可能性があります。