Snowflake Connector for MySQL について¶
注釈
Snowflake Connector for MySQL は コネクタ規約 に従います。
Snowflake Connector for MySQL により以下を実行できます。
MySQL データベースからSnowflakeにデータをロードする。
複製を構成して MySQL データベースの変更がSnowflakeに複製されるようにする。
Snowflakeと MySQL 間の接続を処理するために、コネクタはエージェントを使用します。エージェントはDockerイメージとして配布されます。エージェントはネットワーク内で実行され、Snowflakeアカウントにデータをプッシュするために使用されます。
注釈
Snowflake Connector for MySQL では、エージェントアプリケーションのインスタンスが常に1つだけ実行されている必要があります。
継続中の増分更新では、ソースデータベースで実行された変更をキャプチャする変更データキャプチャ(CDC)手法が使用されます。変更には、 INSERT、 UPDATE、 DELETE の操作が含まれ、これらはSnowflakeの宛先データベースに自動的にレプリケートされます。
複数のアプリケーションインスタンス¶
Snowflakeアカウントに Snowflake Connector for MySQL の複数のインスタンスをインストールできます。詳細については、 オプション: Snowflake Connector for MySQL の複数のインスタンスをインストールする をご参照ください。
プライベートリンク¶
MySQL のSnowflakeコネクタは、プライベートリンクをサポートしています。詳細については、次をご参照ください。
エージェントとコネクタアプリの互換性¶
Snowflake Connector for MySQL は、 x.y.z version と記述された特定のバージョンに対してリリースされます。ここで、xはメジャー、yはマイナー、zはパッチです。dockerhub上のエージェントもX.Y.Zバージョンでリリースされます。 Snowflake Connector for MySQL の各x.y.zバージョンは、同じメジャーバージョンX=xを持ち、エージェントのマイナーバージョンよりも大きいバージョンを持たないすべてのエージェントをサポートします。さらに、 Snowflake Connector for MySQL の各x.0.0バージョンは、すべてのYとZに対してエージェントのすべての(x-1).Y.Zバージョンをサポートします。
既知の制限¶
次のセクションでは、コネクタの既知の制限について説明します。
テーブルの最大数¶
コネクタは、レプリケーションに追加された最大200個のソーステーブルで適切に機能します。さらにテーブルを追加すると、コネクタが不安定になる可能性があります。
トランザクションのサイズ¶
コネクタには、 MySQL のグループレプリケーションと同じ制限 が適用されます。つまり、単一のトランザクションは 4GB 以下のバイナリログメッセージに収まる必要があります。このサイズを超えるトランザクションが発生すると、ソーステーブルが永久に失敗したものとしてマークされ、関連するテーブルの完全なスナップショットの再ロードが必要になります。
コネクタの可用性¶
コネクタをインストールするときは、次の制限に注意してください。
政府リージョンのアカウントはサポートされていません。
コネクタをインストールして構成するには、 ACCOUNTADMIN ロールを持つユーザーとしてログインする必要があります。現時点では、他のロールはサポートされていません。
タイプの互換性¶
ソースデータベースとSnowflakeの列タイプが異なるため、列の最大容量や許容範囲により、一部の値はSnowflakeに変換して書き込むことができません。例:
Snowflake
BINARY
タイプの最大長は8 MB (8,388,608バイト)ですDATE
、DATETIME
、TIMESTAMP
などのSnowflake日付タイプでは、最大年数は9999年ですSnowflake
VARCHAR
タイプの最大長は16 MB (16,777,216バイト)です
このような非互換性が発生した場合、テーブルのレプリケーションは失敗して停止します。
ソーステーブルスキーマの変更¶
次の表は、ソーステーブルスキーマに対するさまざまなタイプの変更と、それらがサポートされているかどうか、またサポートされている場合はその方法を示しています。
新しい列名は、識別子の制限のセクションで説明されているものと同じ制限が適用されます。
スキーマ変更のタイプ |
サポートの有無 |
メモ |
---|---|---|
新しい列を追加する |
有り |
新しい列は、レプリケーションの開始時に存在していた他の列と同様に、宛先テーブルに表示されます。 削除された列または名前が変更された列と同じ名前の新しい列を追加することはできません。 たとえば、 |
既存の列を削除する |
有り |
ソーステーブルで列が削除されても、宛先テーブルでは削除されません。代わりに、ソフトデリート方式が採用され、列名は たとえば、列 |
列の名前を変更する |
有り |
列の名前を変更することは、列を削除して新しい名前で新しい列を作成する操作と同じです。削除は、前の行で説明したソフトデリートのアプローチに従います。 たとえば、列 削除された列または名前が変更された列と同じ名前に列名を変更することはできません。たとえば、 |
列のタイプを変更する |
一部 |
ソーステーブル列のタイプを変更できるのは、以前のタイプと新しいタイプの両方がSnowflakeで同じタイプにマップされている場合のみです。 それ以外の場合、レプリケーションは永久に失敗します。 |
数値列の精度を変更する |
無し |
ソーステーブル列の精度を変更すると、レプリケーションは永久に失敗します。 |
数値列のスケールを変更する |
無し |
ソーステーブル列のスケールを変更すると、レプリケーションは永久に失敗します。 |
主キーの定義を変更する |
無し |
ソーステーブル列の主キーの定義を変更すると、レプリケーションは永久に失敗します。 |
大容量の列¶
アクティブエージェントは、一部のイベントがレプリケーション用に追加されなかったソーステーブルを参照している場合でも、バイナリログからすべてのイベントを継続的に読み取ります。バイナリログに BLOB のような列の更新などの非常に大きなイベントが含まれている場合、使用可能なメモリが不足してエージェントがクラッシュする可能性があります。
主キー¶
主キーのないテーブルはサポートされていません。
識別子の制限¶
現在、コネクタはレプリケートされたスキーマ名、テーブル名、カラム名の "
文字をサポートしていません。さらに、次のキーワードはサポートされていません。
- スキーマ名:
INFORMATION_SCHEMA
- 列名:
_SNOWFLAKE_INSERTED_AT
_SNOWFLAKE_UPDATED_AT
_SNOWFLAKE_DELETED
__SNOWFLAKE_DELETED
のサフィックスが付く名前Snowflakeの予約済みおよび制限付きキーワード で
Cannot be used as column name
とマークされた列名
MySQL バージョン >= 8.0.0¶
現在、コネクタは MySQL (バージョン8)で導入された binlog_row_metadata = full
構成プロパティに依存しています。