無効なメッセージの管理
レプリケーションが失敗したときに無効なメッセージを管理するための、DSE Advanced Replicationストラテジ。
メッセージのレプリケーション時に、DSE Advanced Replicationはレプリケーションが確実に成功するようにメッセージの操作を試みます。場合によっては、データの1つのサブセットのみでレプリケーションが発生することもあります。
また、エッジ・クラスターのスキーマとハブ・クラスターのスキーマとの間の相違が多すぎる場合にも、レプリケーションは失敗します。たとえば、ハブのカラムとエッジの同じカラムでは型が異なる場合や、エッジのテーブルにハブの同じテーブルにはあるプライマリ・キーを形成するカラムがない場合に、スキーマの非互換性が発生します。
メッセージをレプリケートできない場合、リトライの最大数を構成できます。最大数に達してもレプリケーションがまだ失敗する場合、そのメッセージは破棄され、レプリケーション・ログから削除されます。 ソース・クラスターのレプリケーション・ログは、デスティネーション・クラスターへの送信に備えて、データを保存します。
メッセージが破棄されると、CQLクエリー文字列および関連エラー・メッセージがハブ・クラスターに記録されます。失敗したメッセージ・レプリケーションに関連するCQL文字列およびエラー・メッセージを保存する場所を定義するには、以下のロギング・ストラテジのいずれかを使用します。
- SYSTEM_LOG:CQLクエリーおよびエラー・メッセージを、ハブのシステム・ログに記録します。 これはデフォルトの値です。
- TABLE_LOG:CQLクエリーおよびエラー・メッセージを、ハブのdse_advrep.advrep_invalid_messages_log Cassandraテーブルに保存します。
- NONE:ロギングを実行しません。
テーブル・ロギング・ストラテジの場合、無効なメッセージごとに1件のレコードが挿入されます。そのレコードは、失敗したメッセージ・レプリケーションに関する以下のデータを格納します。
- keyspace_name:無効なクエリーのキースペース名
- table_name:無効なクエリーのテーブル名
- time_bucket:Cassandraパーティションが広くなりすぎることを防止するための時間ごとのバケット
- id:時間ベースのid(timeuuid)
- cql_string:CQLクエリー文字列。USING TIMESTAMPオプションを含めることにより、オリジナルのタイムスタンプを明示的に指定します。
- error_msg:エラー・メッセージ
グローバル設定は、エッジ・クラスター全体に適用されます。これらのグローバル設定は、自動作成されるCQLテーブルdse_system.advrep_confに保存されます。グローバル設定を変更するように構成キーを定義するには、dse advrepコマンドライン・ツールを使用するか、CQLテーブルに直接書き込みます。デフォルトのシステム・ログ・ストラテジを引き続き使用する場合は、アクションは特に必要ありません。
手順
テーブル・ロギング・ストラテジを使用して無効なメッセージを管理するには、以下のようにします。