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 の複数のインスタンスをインストールする をご参照ください。

エージェントとコネクタアプリの互換性

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バイト)です

  • DATEDATETIMETIMESTAMP などのSnowflake日付タイプでは、最大年数は9999年です

  • Snowflake VARCHAR タイプの最大長は16 MB (16,777,216バイト)です

このような非互換性が発生した場合、テーブルのレプリケーションは失敗して停止します。

ソーステーブルスキーマの変更

次の表は、ソーステーブルスキーマに対するさまざまなタイプの変更と、それらがサポートされているかどうか、またサポートされている場合はその方法を示しています。

新しい列名は、識別子の制限のセクションで説明されているものと同じ制限が適用されます。

スキーマ変更のタイプ

サポートの有無

メモ

新しい列を追加する

有り

新しい列は、レプリケーションの開始時に存在していた他の列と同様に、宛先テーブルに表示されます。

削除された列または名前が変更された列と同じ名前の新しい列を追加することはできません。

たとえば、 AB という列が最初に存在していたが、 A が削除され、 BB2 という名前に変更された場合、 A または B という名前の列を追加することはできません。

既存の列を削除する

有り

ソーステーブルで列が削除されても、宛先テーブルでは削除されません。代わりに、ソフトデリート方式が採用され、列名は <以前の名前>__SNOWFLAKE_DELETED に変更されます。この処理により、過去の値をクエリできるようになります。列が削除された後にレプリケートされたすべての行では、この列に NULL 値が設定されます。

たとえば、列 A が削除されると、宛先テーブルでは列の名前が A__SNOWFLAKE_DELETED に変更され、列の内容は変更されません。

列の名前を変更する

有り

列の名前を変更することは、列を削除して新しい名前で新しい列を作成する操作と同じです。削除は、前の行で説明したソフトデリートのアプローチに従います。

たとえば、列 A の名前が B に変更された場合、宛先テーブルでは A の名前が A__SNOWFLAKE_DELETED に変更され、新しい列 B が追加されます。変更前に存在していたすべての行は、 A__SNOWFLAKE_DELETED 列の列の値を保持しますが、変更後に追加された新しい行には、 B 列の値が含まれます。

削除された列または名前が変更された列と同じ名前に列名を変更することはできません。たとえば、 ABC という列が最初は存在していたが、 A が削除され、 B の名前が B2 に変更された場合、列 C の名前を A または B に変更することはできません。

列のタイプを変更する

一部

ソーステーブル列のタイプを変更できるのは、以前のタイプと新しいタイプの両方がSnowflakeで同じタイプにマップされている場合のみです。

それ以外の場合、レプリケーションは永久に失敗します。

数値列の精度を変更する

無し

ソーステーブル列の精度を変更すると、レプリケーションは永久に失敗します。

数値列のスケールを変更する

無し

ソーステーブル列のスケールを変更すると、レプリケーションは永久に失敗します。

主キーの定義を変更する

無し

ソーステーブル列の主キーの定義を変更すると、レプリケーションは永久に失敗します。

大容量の列

アクティブエージェントは、一部のイベントがレプリケーション用に追加されなかったソーステーブルを参照している場合でも、バイナリログからすべてのイベントを継続的に読み取ります。バイナリログに BLOB のような列の更新などの非常に大きなイベントが含まれている場合、使用可能なメモリが不足してエージェントがクラッシュする可能性があります。

主キー

主キーのないテーブルはサポートされていません。

識別子の制限

現在、コネクタはレプリケートされたスキーマ名、テーブル名、カラム名の " 文字をサポートしていません。さらに、次のキーワードはサポートされていません。

スキーマ名:
  • INFORMATION_SCHEMA

列名:

MySQL バージョン >= 8.0.0

現在、コネクタは MySQL (バージョン8)で導入された binlog_row_metadata = full 構成プロパティに依存しています。

ソースデータベースの認証

ソースデータベースへの秘密キー認証はサポートされていません。ユーザー名とパスワードによる認証のみがサポートされます。