MySQL
このトピックでは、MySQL ターゲット コネクタを使用して MySQL ターゲットへの接続を構成する方法について説明します。MySQL は、レプリケーション タスクのターゲット データベースとしてのみ使用できます。MySQL ターゲットに接続する前に、データベースで 必要な権限 を構成する必要があります。Data Movement gateway 経由で MySQL に接続している場合は、ドライバーのセットアップ の説明に従ってドライバーをインストールする必要もあります。
MySQL コネクタを使用する場合の制限と考慮事項については、「 制限と考慮事項」を参照してください。
接続プロパティの設定
コネクタを構成するには、次の手順を実行します。
-
[接続] で、[接続を作成] をクリックします。
-
MySQL ターゲット コネクタを選択し、次の設定を行います。
データ ターゲット
-
データ ゲートウェイ:Data Movement gateway を使用する場合は、MySQL ターゲットへの接続をテストするために使用するデータ ゲートウェイを選択します。これは、データ ソースへのアクセスに使用されたゲートウェイと同じである必要があります。
情報メモ- このサブスクリプション ティアでは Data Movement gateway がサポートされていないため、Qlik Talend Cloud スターター サブスクリプションではこの項目を使用できません。
-
Data Movement gateway マシンに適切なドライバーをインストールする必要もあります。詳細については、以下の「ドライバーのセットアップ」を参照してください。
-
クラウド プロバイダー: 必要に応じて次のいずれかを選択します。
-
なし
- オンプレミスの MySQL の場合は、MariaDB、Amazon Aurora、または Microsoft Azure Database for MySQL - フレキシブル サーバー。
- Data Movement gateway なしで作業する場合
-
Amazon RDS
Amazon RDS for MariaDB または Amazon RDS for MySQL の場合。
-
Google Cloud
Google Cloud SQL for MySQL の場合。
-
Microsoft Azure
Microsoft Azure Database for MySQL の場合。
-
-
サーバー: MySQL データベースがインストールされているコンピューターのホスト名または IP アドレスです
-
ポート: データベースに接続するときに使用するポート。デフォルトは、3306 です。
アカウントのプロパティ
ユーザー名とパスワード: MySQL サーバー データベースへのアクセスを承認されたユーザーのユーザー名とパスワード。
データベースのプロパティ
- ターゲット データベース タイプ: 次のいずれかを選択します。
- 特定のデータベース: このオプションを選択すると、すべてのソース スキーマが指定されたデータベースにロードされます。
- 複数のデータベース: このオプションを選択すると、各ソース スキーマが対応するデータベースにロードされます。さらに、 既定では、すべてのコントロール テーブルが attrep_control という新しいスキーマにレプリケートされます。コントロール テーブルの詳細については、「コントロール テーブル」を参照してください。
- 最大ファイル サイズ (KB): CSV ファイルが MySQL ターゲット データベースにロードされる前に、CSV ファイルの最大サイズ (KB 単位) を選択または入力します。既定値は 32000 KB です。
- 並列ロード スレッド: スレッドの数を増やすと、MySQL ターゲット データベースにデータをロードする際のパフォーマンスが向上する可能性があります。スレッドごとに個別の接続が必要となるため、多数のスレッドを設定するとデータベースのパフォーマンスに悪影響を及ぼす可能性があることに注意してください。
内部プロパティ
内部プロパティは、特殊なユース ケース向けであるため、ダイアログで公開されません。Qlik サポートによって指示があった場合にのみ使用する必要があります。
項目右側にある と ボタンを使用して、必要に応じてプロパティを追加したり削除したりします。
名前
接続の表示名です。
前提条件
必要な権限
コネクタ設定で指定されたユーザーには、次の権限が付与される必要があります。
- MySQL アカウントへのアクセス
- MySQL データベースの読み取り/書き込み権限
- レプリケーションに関係する各ターゲット スキーマに対する次の権限:
- ALTER
- CREATE
- CREATE TEMPORARY TABLES
- DELETE
- DROP
- INSERT
- SELECT
- UPDATE
ドライバーのセットアップ
このセクションでは、必要な driver のインストール方法を説明しました。このプロセスでは、必要な driver を自動的にダウンロード、インストール、設定するスクリプトを実行します。また、必要に応じて driver の更新やアンインストールを行うスクリプトを実行することもできます。
インストールの準備
-
データ移動 ゲートウェイ サーバーに Python 3.6.x 以降 がインストールされていることを確認します。
Python は、ほとんどの Linux 配布に前もってインストールされています。お使いのシステムにインストールされている Python のバージョンは、次のコマンドを実行することで確認できます。
python3 --version
driver のインストール
driver をダウンロードしてインストールするには:
-
データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:
opt/qlik/gateway/movement/drivers/bin
-
次のコマンドを実行します。
構文:
./install mysql
アクセス制限または技術的な問題により driver をダウンロードできない場合は、driver をダウンロードする場所と データ移動 ゲートウェイ マシンのコピー先を指示するメッセージが表示されます。それが完了したら、install mysql コマンドを再度実行します。
それ以外の場合は、driver の EULA が表示されます。
-
以下のいずれかを行います。
- 何度も [Enter] を押すと、EULA 全体をスクロールできます。
- 何度もスペースバーを押すと、EULA 全体をスピーディにスクロールできます。
- q を押すと、ライセンス テキストが終了し、EULA 受諾オプションが表示されます。
-
以下のいずれかを行います。
- 「y」を入力して [Enter] を押すと、EULA が受諾され、インストールが開始します。
- 「n」を入力して [Enter] を押すと、EULA が拒否され、インストールが終了します。
-
「v」を入力して [Enter] を押すと、EULA が再表示されます。
driver がインストールされます。
driver の更新
提供された driver をインストールする前に前のバージョンの driver をアンインストールしたい場合は、更新コマンドを実行します。
driver をダウンロードして更新するには:
-
データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:
opt/qlik/gateway/movement/drivers/bin
-
次のコマンドを実行します。
構文:
./update mysql
アクセス制限または技術的な問題により driver をダウンロードできない場合は、driver をダウンロードする場所と データ移動 ゲートウェイ マシンのコピー先を指示するメッセージが表示されます。それが完了したら、update mysql コマンドを再度実行します。
それ以外の場合は、driver の EULA が表示されます。
-
以下のいずれかを行います。
- 何度も [Enter] を押すと、EULA 全体をスクロールできます。
- 何度もスペースバーを押して、EULA 全体をスピーディにスクロールします。
- q を押すと、ライセンス テキストが終了し、EULA 受諾オプションが表示されます。
-
以下のいずれかを行います。
- 「y」を入力して [Enter] を押すと、EULA が受諾され、インストールが開始します。
- 「n」を入力して [Enter] を押すと、EULA が拒否され、インストールが終了します。
- 「v」を入力して [Enter] を押すと、最初から EULA をレビューできます。
古い driver がアンインストールされ、新しい driver がインストールされます。
driver のアンインストール
driver をアンインストールする場合は、アンインストール コマンドを実行します。
driver をアンインストールするには:
-
このコネクタを使用するように構成されているすべてのタスクを停止します。
-
データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:
opt/qlik/gateway/movement/drivers/bin
-
次のコマンドを実行します。
構文:
./uninstall mysql
driver がアンインストールされます。
ドライバーの手動インストール
自動ドライバーのインストールが正常に完了しなかった場合にのみ、driver を手動でインストールするようにしてください。
Data Movement gateway がインストールされたら、mysql-connector-odbc-<バージョン>.x86_64.rpm ドライバーをダウンロードします。サポートされているバージョンへの直接ダウンロード リンクは、/opt/qlik/gateway/movement/drivers/manifests/mysql.yaml の binary-artifacts にあります。ダウンロードが完了したら、RPM を Data Movement gateway マシンにコピーします。
Data Movement gateway サーバーで、シェル プロンプトを開き、次の手順を実行します。
-
Data Movement gateway サービスを停止します。
sudo systemctl stop repagent
-
必要に応じて、サービスが停止されたことを確認します。
sudo systemctl status repagent
ステータスは次のようになっているはずです。
Active: inactive (dead) since <timestamp> ago
- ドライバーを Data Movement gateway マシンにインストールします。
-
作業ディレクトリを <Data Movement gateway_Install_Dir>/bin に変更します。
-
次のように、ドライバーの場所を site_arep_login.sh ファイルにコピーします。
echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib64" >> site_arep_login.sh
これにより、ドライバーが「LD_LIBRARY_PATH」に追加され、site_arep_login.sh ファイル内のドライバーの場所が更新されます。
-
必要に応じて、ドライバーの場所がコピーされていることを確認します。
cat site_arep_login.sh
-
次の例のように、/etc/odbcinst.ini ファイルに MySQL のエントリが含まれていることを確認します。
[MySQL ODBC 8.0 Unicode Driver]
Driver = /usr/lib64/libmyodbc8w.so
UsageCount = 1
-
Data Movement gateway サービスを起動します。
sudo systemctl start repagent
-
必要に応じて、サービスが開始されたことを確認します。
sudo systemctl status repagent
ステータスは次のようになっているはずです。
Active: active (running) since <timestamp> ago
制限と考慮事項
MySQL をレプリケーション ターゲットとして使用する場合、次の制限が適用されます。
-
MariaDB ターゲット データベースにレプリケートするときに、DATETIME 値がゼロに設定されている場合は、DATETIME を有効な値に置き換える変換を定義する必要があります。例:
replace($datetime_column,'9999-12-31 23:59:59','2000-01-01 22:00:00')
情報メモこの制限は、Microsoft Azure Database for MySQL には適用されません。 - MySQL の操作方法により、フル ロード タスク中にデータを MySQL ターゲットにロードする場合、重複キー エラーはログに報告されません。
-
列の値を既存の値に更新する場合、 MySQL から影響を受ける行が 0 行返されます (1 行の更新を実行する Oracle や Microsoft SQL Server とは異なります)。
これにより、attrep_apply_exceptions Control Table にエントリが生成され、次の警告が表示されます。
Some changes from the source database had no impact when applied to the target database. See attrep_apply_exceptions table for details.
-
MySQL 5.7 の問題 (バージョン 8.0 で解決済み) により、フル ロードで CSV ファイルを使用する場合、マルチバイト文字を TEXT 列に挿入できません。したがって、ターゲット エンドポイントが MySQL 5.7 で、レプリケートされたテーブルに UTF-8 マルチバイト文字を含む TEXT 列が含まれている場合、ターゲット テーブルが空になる可能性があります。
回避方法:
[コネクタ設定] で、loadUsingCSV の内部パラメーターを FALSE に設定します。パフォーマンスに影響を与える可能性があることに注意してください。
-
4 バイトの絵文字をレプリケートする必要がある場合は、ターゲット スキーマの文字セットを utf8mb4 に設定する必要があります。
データ型
ネイティブ データ タイプの情報は保持され、データセット ビューの [ネイティブ データ タイプ] 列に表示されます。列が表示されない場合は、データ セット ビューの列ピッカーを開いて、 [ネイティブ データ タイプ] 列を選択する必要があります。
Qlik Cloud データ型 | MySQL データ型 |
---|---|
BOOL |
BOOL |
BYTES |
長さが => 1 かつ =< 8095 の場合: VARBINARY (Length) 長さが => 8096 かつ =< 65535 の場合: BLOB 長さが => 65536 かつ =< 16777215 の場合: MEDIUMBLOB 長さが => 16777216 かつ =< 2147483647 の場合: LONGBLOB |
DATE |
DATE |
TIME |
TIME |
DATETIME |
スケールが 0 以上で 6 以下の場合は: DECIMAL (p,s) スケールが 7 以上で 12 以下の場合は: VARCHAR (37) |
INT1 |
TINYINT |
INT2 |
SMALLINT |
INT4 |
INTEGER |
INT8 |
BIGINT |
NUMERIC |
スケールが => 0 かつ =< 30 の場合: DECIMAL (p,s) スケールが => 31 かつ =< 100 の場合: VARCHAR (45) |
REAL4 |
FLOAT |
REAL8 |
DOUBLE |
STRING |
長さが => 1 かつ =< 8095 の場合: VARCHAR (Length) 長さが => 8096 かつ =< 65535 の場合: TEXT 長さが => 65536 かつ =< 16777215 の場合: MEDIUMTEXT 長さが => 16777216 かつ =< 2147483647 の場合: LONGTEXT |
UINT1 |
UNSIGNED TINYINT |
UINT2 |
UNSIGNED SMALLINT |
UINT4 |
UNSIGNED INTEGER |
UINT8 |
UNSIGNED BIGINT |
WSTRING |
長さが => 1 かつ =< 8095 の場合: VARCHAR (Length) 長さが => 8096 かつ =< 65535 の場合: TEXT 長さが => 65536 かつ =< 16777215 の場合: MEDIUMTEXT 長さが => 16777216 かつ =< 2147483647 の場合: LONGTEXT |
BLOB |
[無制限の LOB サイズを許可] オプションが有効な場合:
[LOB サイズを制限] オプションが有効な場合:
LOB サイズの制限については、「Metadata」を参照してください。 |
NCLOB |
[無制限の LOB サイズを許可] オプションが有効な場合:
[LOB サイズを制限] オプションが有効な場合:
LOB サイズの制限については、「Metadata」を参照してください。 |
CLOB |
[無制限の LOB サイズを許可] オプションが有効な場合:
[LOB サイズを制限] オプションが有効な場合:
LOB サイズの制限については、「Metadata」を参照してください。 |