1.3.3. MySQL コネクター設定プロパティー

Debezium MySQL コネクターを実行するには、ここに記載の設定プロパティーが 必要 です。また、詳細の MySQL コネクタープロパティー もデフォルト値を変更する必要がなく、コネクター設定で指定する必要はありません。

ヒント

Debezium MySQL コネクターは、Kafka プロデューサーおよびコンシューマーの作成時に パススルー 設定をサポートします。パススルー プロパティーの詳細は、Kafka のドキュメント を 参照してください。

プロパティーデフォルト説明

name

 

コネクターの一意名。同じ名前で再登録を試みると失敗します。(このプロパティーはすべての Kafka Connect コネクターに必要です)

connector.class

 

コネクターの Java クラスの名前。MySQL コネクターには、常に io.debezium​.connector.mysql.MySqlConnector の値を使用します。

tasks.max

1

このコネクターのために作成する必要のあるタスクの最大数。MySQL コネクターは常に単一のタスクを使用するため、この値を使用しません。そのため、デフォルト値は常に許容されます。

database.hostname

 

MySQL データベースサーバーの IP アドレスまたはホスト名。

database.port

3306

MySQL データベースサーバーのポート番号 (整数)。

database.user

 

MySQL データベースサーバーへの接続時に使用する MySQL データベースの名前。

database.password

 

MySQL データベースサーバーへの接続時に使用するパスワード。

database.server.name

 

監視対象の特定の MySQL データベースサーバー/クラスターの namespace を識別および提供する論理名。論理名は、他のコネクター全体で一意となる必要があります。これは、このコネクターから生成されるすべての Kafka トピック名の接頭辞として使用されるためです。英数字とアンダースコアのみを使用する必要があります。

database.server.id

random

このデータベースクライアントの数値 ID。MySQL クラスターで現在稼働しているすべてのデータベースプロセスで一意である必要があります。このコネクターは、MySQL データベースクラスターを (この一意の ID を持つ) 別のサーバーとして結合するため、binlog を読み取ることができます。デフォルトでは、5400 から 6400 までの乱数が生成されますが、明示的な値を設定することを推奨します。

database.history.kafka.topic

 

コネクターがデータベーススキーマの履歴を保存する Kafka トピックの完全名。

database.history​.kafka.bootstrap.servers

 

Kafka クラスターへの最初の接続を確立するためにコネクターが使用するホストとポートのペアの一覧。このコネクションは、コネクターによって以前に保存されたデータベーススキーマ履歴の取得や、ソースデータベースから読み取られる各 DDL ステートメントの書き込みに使用されます。これは、Kafka Connect プロセスによって使用される同じ Kafka クラスターを示す必要があります。

database.whitelist

空の文字列

監視するデータベース名と一致する正規表現のコンマ区切りリスト(任意)。ホワイトリストに含まれていないデータベース名は監視から除外されます。デフォルトでは、すべてのデータベースが監視されます。database.blacklist と併用できません。

database.blacklist

空の文字列

監視から除外されるデータベース名と一致する正規表現のコンマ区切りリスト(任意)。ブラックリストに含まれていないデータベース名が監視されます。database.whitelist と併用できません。

table.whitelist

空の文字列

監視するテーブルの完全修飾テーブル識別子と一致する正規表現のコンマ区切りリスト(任意)。ホワイトリストに含まれていないテーブルはすべて監視から除外されます。各識別子の形式は databaseName.tableName です。デフォルトでは、コネクターは各監視対象データベースのシステム以外のテーブルをすべて監視します。table.blacklist と併用できません。

table.blacklist

空の文字列

監視から除外されるテーブルの完全修飾テーブル識別子と一致する正規表現のコンマ区切りリスト(任意)。ブラックリストに含まれていないテーブルはすべて監視されます。各識別子の形式は databaseName.tableName です。table.whitelist と併用できません。

column.blacklist

空の文字列

変更イベントメッセージの値から除外される必要がある列の完全修飾名と一致する正規表現のコンマ区切りリスト (任意)。列の完全修飾名の形式は databaseName です。tableName.columnName または databaseName.schemaName.tableName.columnName.

column.truncate.to.length.chars

該当なし

フィールド値が指定された文字数より長い場合に、変更イベントメッセージ値で値を省略する必要がある文字ベースの列の完全修飾名と一致する正規表現のコンマ区切りリスト (任意)。長さが異なる複数のプロパティーを単一の設定で使用できますが、それぞれの長さは正の整数である必要があります。列の完全修飾名の形式は databaseName です。tableName.columnName または databaseName.schemaName.tableName.columnName.

column.mask.with.length.chars

該当なし

文字ベースの列の完全修飾名にマッチする正規表現のコンマ区切りリスト (オプション) で、変更イベントメッセージの値を、指定された数のアスタリスク (*) 文字で設定されるフィールド値に置き換える必要があります。長さが異なる複数のプロパティーを単一の設定で使用できますが、それぞれの長さは正の整数またはゼロである必要があります。列の完全修飾名の形式は databaseName です。tableName.columnName または databaseName.schemaName.tableName.columnName.

column.propagate.source.type

該当なし

出力された変更メッセージの該当するフィールドスキーマに元の型および長さをパラメーターとして追加する必要がある列の完全修飾名と一致する、正規表現のコンマ区切りリスト (任意)。スキーマパラメーター( __Debezium.source.column.type__Debezium.source.column.length、および _Debezium.source.column.scale )は、それぞれ元の型名と長さ(可変幅型)を伝播するために使用されます。シンクデータベースの対応する列を適切にサイズ調整するのに便利です。列の完全修飾名の形式は databaseName です。tableName.columnName または databaseName.schemaName.tableName.columnName.

time.precision.mode

adaptive_time​_microseconds

時間、日付、およびタイムスタンプは、以下を含む異なる精度の種類で表すことができます。 adaptive_time_microseconds (デフォルト)は、データベース列の型を基にして、ミリ秒、マイクロ秒、またはナノ秒の精度値のいずれかを使用して、データベースの値と全く同じように日付、日時、およびタイムスタンプ値をキャプチャーします。または connect は、常にマイクロ秒としてキャプチャーされる TIME タイプフィールドを除き、ミリ秒、マイクロ秒、または connect は、Kafka Connect の Time の組み込み表現を使用して時間とタイムスタンプ値を常に表現します。 date、および Timestamp。データベース列の精度に関わらず、ミリ秒の精度を使用します。

decimal.handling.mode

precise

コネクターによる DECIMAL 列および NUMERIC 列の値の処理方法を指定します。precise (デフォルト)はバイナリー形式で変更イベントで表される java.math.BigDecimal 値を使用して正確に表します。または doubledouble 値を使用して表します。精度が失われる可能性はありますが、非常に簡単に使用できます。string オプションは値をフォーマットされた文字列としてエンコードします。これは簡単に使用できますが、実際の型に関するセマンティック情報は失われます。

bigint.unsigned.handling.mode

long

BIGINT UNSIGNED 列を変更イベントで表す方法を指定します。precisejava.math.BigDecimal を使用して値を表します。値は、バイナリー表現と Kafka Connect の org.apache.kafka.connect.data.Decimal タイプを使用して変更イベントでエンコードされます。long (デフォルト)は Java の long を使用して値を表します。精度を提供しない場合もありますが、コンシューマーでの使用がはるかに簡単になります。通常は long が望ましい設定です。2^63 を超える値を使用する場合のみ、それらの値は long を使用して伝えことができないため、正確な 設定を使用する必要があります。

include.schema.changes

true

コネクターがデータベーススキーマの変更を、データベースサーバー ID と同じ名前の Kafka トピックに公開するかどうかを指定するブール値。各スキーマの変更はデータベース名が含まれるキーを使用して記録され、その値には DDL ステートメントが含まれます。これは、コネクターがデータベース履歴を内部で記録する方法には依存しません。デフォルトは true です。

include.query

false

変更イベントを生成した元の SQL クエリーがコネクターに含まれる必要があるかどうかを指定するブール値。
注記:このオプションでは、MySQL を binlog_rows_query_log_events オプションを ON に設定する必要があります。スナップショットプロセスから生成されたイベントに対するクエリーは表示されません。
警告:このオプションを有効にすると、変更イベントに元の SQL ステートメントを含めることで、明示的にブラックリストに指定またはマスクされたテーブルまたはフィールドが公開される可能性があります。このため、このオプションはデフォルトで false に設定されます。

event.processing​.failure.handling.mode

fail

binlog イベントのデシリアライズ中にコネクターが例外に反応する方法を指定します。fail は例外(問題のあるイベントとその binlog オフセットを示す)を伝播し、コネクターを停止させます。
warn は問題のあるイベントをスキップし、問題のあるイベントとその binlog オフセットがログに記録されます。
skip は問題のあるイベントがスキップされます。

inconsistent.schema.handling.mode

fail

内部スキーマ表現に存在しないテーブルに関連する binlog イベント(つまり、内部表現がデータベースと一貫性がない)に関連する binlog イベントにコネクターがどのように反応するかを指定します。つまり、問題のあるイベントとその binlog オフセットを示す例外が発生します(問題のあるイベントとその binlog オフセットを示す)。
warn により、問題のあるイベントがスキップされ、問題のあるイベントとその binlog オフセットが記録されます。
skip は問題のあるイベントがスキップされます。

max.queue.size

8192

データベースログから読み取られた変更イベントが Kafka に書き込まれる前に配置される、ブロッキングキューの最大サイズを指定する正の整数値。このキューは、Kafka への書き込みが遅い場合や Kafka が利用できない場合などに binlog リーダーにバックプレシャーを提供できます。キューに発生するイベントは、このコネクターによって定期的に記録されるオフセットには含まれません。デフォルトは 8192 で、常に max.batch.size プロパティーに指定された最大バッチサイズよりも大きくする必要があります。

max.batch.size

2048

このコネクターの反復処理中に処理される必要があるイベントの各バッチの最大サイズを指定する正の整数値。デフォルトは 2048 です。

poll.interval.ms

1000

各反復処理の実行中に新しい変更イベントが表示されるまでコネクターが待機する時間 (ミリ秒単位) を指定する正の整数値。デフォルトは 1000 ミリ秒 (1 秒) です。

connect.timeout.ms

30000

コネクターが MySQL データベースサーバーへの接続を試行した後、タイムアウトするまでの最大の待機期間をミリ秒単位で指定する正の整数値。デフォルトは 30 秒です。

gtid.source.includes

 

MySQL サーバーで binlog の位置を見つけるために使用される GTID セットのソース UUID に一致する、正規表現のコンマ区切りリスト。これらの include パターンのいずれかに一致するソースを持つ GTID 範囲のみが使用されます。gtid.source.excludes と併用できません。

gtid.source.excludes

 

MySQL サーバーで binlog の位置を見つけるために使用される GTID セットのソース UUID に一致する、正規表現のコンマ区切りリスト。これらの除外パターンのいずれにも一致するソースを持つ GTID 範囲のみが使用されます。gtid.source.includes と併用できません。

tombstones.on.delete

true

削除イベント後に廃棄 (tombstone) イベントを生成するかどうかを制御します。
true の場合、削除操作は 削除 イベントと後続の廃棄(tombstone)イベントで表されます。false の場合、削除 イベントのみが送信されます。
廃棄 (tombstone) イベントを生成すると (デフォルトの動作)、Kafka はソースレコードが削除されると、指定のキーに関連するすべてのイベントを完全に削除できます。

message.key.columns

空の文字列

プライマリーキーをマップする完全修飾テーブルおよび列と一致する正規表現のセミコロン区切りリスト。
各項目 (正規表現) は、カスタムキーを表す完全修飾 <fully-qualified table>:<a comma-separated list of columns> と一致する必要があります。
特定のコネクターに応じて、完全修飾テーブルは DB_NAME.TABLE_NAME または SCHEMA_NAME.TABLE_NAME として定義できます。

1.3.3.1. 高度な MySQL コネクタープロパティー

プロパティーデフォルト説明

connect.keep.alive

true

MySQL サーバー/クラスターへの接続を確実に維持するために別のスレッドを使用するかどうかを指定するブール値。

table.ignore.builtin

true

組み込みシステムテーブルを無視するかどうかを指定するブール値。これは、テーブルのホワイトリストまたはブラックリストに関係なく適用されます。デフォルトでは、システムテーブルは監視から除外され、どのシステムテーブルにも変更が加えられてもイベントが生成されません。

database.history.kafka.recovery.poll.interval.ms

100

永続化されたデータのポーリングが行われている間にコネクターが起動/回復を待つ最大時間 (ミリ秒単位) を指定する整数値。デフォルトは 100 ミリ秒です。

database.history.kafka.recovery.attempts

4

エラーでコネクターのリカバリーが失敗する前に、コネクターが永続化された履歴データの読み取りを試行する最大回数。データが受信されなかった場合に最大待機する時間は、recovery.attempts x recovery.poll.interval.ms です。

database.history.skip.unparseable.ddl

false

コネクターが不正なデータベースステートメントや不明なデータベースステートメントを無視するか、処理を停止し、オペレーターが問題を修正するかどうかを指定するブール値。安全なデフォルトは false です。スキップは、binlog が処理されたときにデータの損失や分割が発生する可能性があるため、注意して使用する必要があります。

database.history.store.only.monitored.tables.ddl

false

コネクターがすべての DDL ステートメントを記録する必要があるかどうか、または( trueの場合) Debezium によって監視されるテーブルに関連するもののみを記録するかどうかを指定するブール値(フィルター設定を使用)。安全なデフォルトは false です。この機能は、フィルターの変更時に不足しているデータが必要になる可能性があるため、注意して使用してください。

database.ssl.mode

disabled

暗号化された接続を使用するかどうかを指定します。デフォルトは が 無効 で、暗号化されていない接続の使用を指定します。

推奨される オプションは、サーバーがセキュアな接続をサポートしますが、暗号化されていない接続にフォールバックします。

required オプションは暗号化された接続を確立しますが、何らかの理由で作成できない場合は失敗します。

verify_ca オプションは required のように動作しますが、さらに、設定された認証局(CA)証明書に対してサーバー TLS 証明書を検証し、有効な CA 証明書と一致しない場合は失敗します。

verify_identity オプションは verify_ca のように動作しますが、さらにサーバー証明書がリモート接続のホストと一致することを確認します。

binlog.buffer.size

0

binlog リーダーによって使用される先読みバッファーのサイズ。
特定の条件下では、MySQL binlog に ROLLBACK ステートメントによって終了したコミットされていないデータが含まれる可能性があります。一般的な例としては、セーブポイントを使用したり、一時的なテーブルの変更と通常のテーブルの変更が 1 つのトランザクションに混在する場合などです。
トランザクションの開始が検出されると、Debezium は binlog の位置をロール転送して COMMIT または ROLLBACK を見つけ、トランザクションからの変更をストリーミングするかどうかを判断できるようにします。バッファーサイズは、トランザクション境界の検索中に Debezium がバッファーできるトランザクションの最大変更数を定義します。トランザクションのサイズがバッファーよりも大きい場合、Debezium はストリーミング中にバッファーに収まらないイベントを巻き戻し、再読み取りする必要があります。値 0 はバッファーを無効にします。
デフォルトでは無効です。
注記: この機能は、実行中の機能として考慮する必要があります。お客様からのフィードバックが必要ですが、完全に有効ではないことが期待されています。

snapshot.mode

Initial

コネクターの起動時にスナップショットを実行する基準を指定します。デフォルトは initial で、論理サーバー名に対してオフセットが記録されていない場合にのみコネクターがスナップショットを実行できます。when_needed オプションは、必要とみなされるたびにコネクターが起動時にスナップショットを実行するように指定します(オフセットが利用できない場合、以前に記録されたオフセットがサーバーで利用可能ではない binlog の場所または GTID を指定する場合)。never オプションは、接続でスナップショットを使用することはなく、論理サーバー名を使用して最初の起動時にコネクターが binlog の開始から読み取る必要があることを指定します。これは、binlog にデータベースの履歴全体が含まれることが保証されている場合にのみ有効であるため、注意して使用する必要があります。トピックにデータの整合性のあるスナップショットが含まれる必要はありませんが、コネクターの開始以降の変更のみを必要とする場合は、コネクターはスキーマ(データではなく)のみをスナップショットする schema_only オプションを使用できます。

schema_only_recovery は、既存のコネクターが破損または失われたデータベース履歴トピックをリカバリーしたり、予期せずに増加するデータベース履歴トピックを定期的にクリーンアップ(無限保持が必要)するためのリカバリーオプションです。

snapshot.locking.mode

最小

スナップショットの実行中にコネクターがグローバル MySQL 読み取りロック(データベースへの更新を行なう)に保持するかどうか、およびその期間を制御します。許容値は、extended および none の 3 つです。

minimal: コネクターは、データベーススキーマと他のメタデータを読み取る間、スナップショットの最初の部分に対してのみグローバル読み取りロックを保持します。スナップショットの残りの作業では、各テーブルからすべての行を選択する必要があります。これは、グローバル読み取りロックが保持されなくなり、他の MySQL クライアントがデータベースを更新している場合でも、REEPEATABLE READ トランザクションを使用して一貫した方法で実行できます。

拡張: MySQL が REPEATABLE READ セマンティクスから除外する操作を送信するクライアントが、スナップショットの期間中すべての書き込みをブロックすることが望ましい場合があります。このような場合は、このオプションを使用します。

none Will は、スナップショットプロセス中にコネクターがテーブルロックを取得できないようにします。この値はすべてのスナップショットモードで使用できますが、スナップショットの作成中にスキーマの変更が行われていない場合に のみ 安全に使用できます。MyISAM エンジンで定義されたテーブルの場合、MyISAM によってテーブルロックが取得されるようにこのプロパティーが設定されていても、テーブルはロックされます。この動作は、行レベルのロックを取得する InnoDB エンジンとは異なります。

snapshot.select.statement.overrides

 

スナップショットに含まれるテーブルの行を制御します。
このプロパティーには、完全修飾テーブル (DB_NAME.TABLE_NAME) のコンマ区切りリストが含まれます。各テーブルの select ステートメントは、ID snapshot.select.statement.overrides.[DB_NAME].[TABLE_NAME] によって識別される、テーブルごとに 1 つずつ追加の設定プロパティーに指定されます。これらのプロパティーの値は、スナップショットの実行中に特定のテーブルからデータを取得するときに使用する SELECT ステートメントです。大規模な追加専用テーブルで可能なユースケースとしては、前のスナップショットが中断された場合にスナップショットの開始 (再開) 点を設定することが挙げられます。
注記: この設定はスナップショットにのみ影響します。binlog からキャプチャーされたイベントは全く影響を受けません。

min.row.count.to.stream.results

1000

スナップショット操作中に、コネクターは含まれる各テーブルをクエリーし、そのテーブルのすべての行に対する読み取りイベントを生成します。このパラメーターは、MySQL 接続がテーブルのすべての結果をメモリーにプルする(高速ですが、大量のメモリーを必要とする)か、または結果が代わりにストリーミングされる(速度が遅い可能性がありますが、非常に大きなテーブルに対して機能する)かどうかを決定します。この値は、コネクターが結果をストリーミングする前にテーブルに含まれる必要がある行の最小数を指定します。デフォルトは 1,000 です。すべてのテーブルサイズチェックを省略し、スナップショットの実行中に常にすべての結果をストリーミングするには、このパラメーターを 0 に設定します。

heartbeat.interval.ms

0

ハートビートメッセージが送信される頻度を制御します。
このプロパティーには、コネクターがハートビートメッセージをハートビートトピックに送信する頻度を定義するミリ秒単位の間隔が含まれます。このプロパティーを 0 に設定して、ハートビートメッセージが全く送信されないようにします。
デフォルトでは無効にされています。

heartbeat.topics.prefix

__debezium-heartbeat

ハートビートメッセージが送信されるトピックの命名を制御します。
トピックは、<heartbeat.topics.prefix>.<server.name> パターンに従って名前が付けられます。

database.initial.statements

 

データベースへの JDBC 接続(トランザクションログの読み取り接続ではない)が確立されたときに実行される SQL ステートメントのセミコロン区切りリスト。セミコロン(';;')を使用してセミコロンを区切り文字としてではなく、文字として使用します。
注記:コネクターは独自の判断で JDBC 接続を確立するため、通常これはセッションパラメーターの設定にのみ使用してくださいが、DML ステートメントの実行にはは使用しないでください。

snapshot.delay.ms

 

コネクターの起動後、スナップショットを取得するまで待機する間隔 (ミリ秒単位)。
クラスター内で複数のコネクターを開始する際に スナップショットが中断されないようにするために使用でき、コネクターのリバランスが実行される可能性があります。

snapshot.fetch.size

 

スナップショットの実行中に各テーブルから 1 度に読み取る必要がある行の最大数を指定します。コネクターは、このサイズの複数のバッチでテーブルの内容を読み取ります。

snapshot.lock.timeout.ms

10000

スナップショットの実行時に、テーブルロックを取得するまで待つ最大時間 (ミリ秒単位) を指定する正の整数値。この時間間隔でテーブルロックを取得できない場合、スナップショットは失敗します。How the MySQL connector perform database snapshots を参照してください。

enable.time.adjuster

 

MySQL では、ユーザーは 2 桁の数字または 4 桁の年値を挿入できます。2 桁の数値の場合、値は自動的に 1970 - 2069 の範囲にマッピングされます。通常、これはデータベースで実行されます。
Debezium が変換を行う場合は true (デフォルト)に設定します。
変換が完全にデータベースに委譲されている場合は false に設定します。

sanitize.field.names

コネクター設定が、Avro を使用するように key.converter または value.converter パラメーターを明示的に指定する場合は true です。それ以外の場合のデフォルトは false です。

Avro の命名要件 に準拠するためにフィールド名がサニタイズされるかどうか。