# MySQL

このトピックでは、MySQL ターゲット コネクタを使用して MySQL ターゲットへの接続を構成する方法について説明します。MySQL は、レプリケーション タスクのターゲット データベースとしてのみ使用できます。MySQL ターゲットに接続する前に、データベースで [必要な権限](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/mysql-target.htm#Permissi) を構成する必要があります。Data Movement gateway 経由で MySQL に接続している場合は、[ドライバーのセットアップ](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/mysql-target.htm#Driver) の説明に従ってドライバーをインストールする必要もあります。

MySQL コネクタを使用する場合の制限と考慮事項については、「[制限と考慮事項](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/mysql-target.htm#Limitati)」を参照してください。

## 接続プロパティの設定

コネクタを構成するには、次の手順を実行します。

1. [接続] で、 [接続を作成] をクリックします。

2. MySQL ターゲット コネクタを選択し、次の設定を行います。

### データ ターゲット

* データ ゲートウェイ：Data Movement gateway を使用する場合は、MySQL ターゲットへの接続をテストするために使用するデータ ゲートウェイを選択します。これは、データ ソースへのアクセスに使用されたゲートウェイと同じである必要があります。

  情報メモ

  * このサブスクリプション ティアでは Data Movement gateway がサポートされていないため、Qlik Talend Cloud スターター サブスクリプションではこの項目を使用できません。

  * Data Movement gateway マシンに適切なドライバーをインストールする必要もあります。詳細については、以下の「[ドライバーのセットアップ](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/mysql-target.htm#Driver)」を参照してください。

* クラウド プロバイダー: 必要に応じて次のいずれかを選択します。

  * なし

    * オンプレミスの 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 という新しいスキーマにレプリケートされます。コントロール テーブルの詳細については、「[コントロール テーブル](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/control_tables.htm)」を参照してください。
* 最大ファイル サイズ (KB): CSV ファイルが MySQL ターゲット データベースにロードされる前に、CSV ファイルの最大サイズ (KB 単位) を選択または入力します。既定値は 32000 KB です。
* 並列ロード スレッド: スレッドの数を増やすと、MySQL ターゲット データベースにデータをロードする際のパフォーマンスが向上する可能性があります。スレッドごとに個別の接続が必要となるため、多数のスレッドを設定するとデータベースのパフォーマンスに悪影響を及ぼす可能性があることに注意してください。

### 内部プロパティ

内部プロパティは、特殊なユース ケース向けであるため、ダイアログで公開されません。Qlik サポートによって指示があった場合にのみ使用する必要があります。

項目右側にある the 新規作成 icon と the キャンセル icon ボタンを使用して、必要に応じてプロパティを追加したり削除したりします。

### 名前

接続の表示名です。

## 前提条件

### 必要な権限

コネクタ設定で指定されたユーザーには、次の権限が付与される必要があります。

* 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 をダウンロードしてインストールするには:

1. データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:

   opt/qlik/gateway/movement/drivers/bin

2. 次のコマンドを実行します:

   構文:

   ./install mysql

   アクセス制限または技術的な問題により driver をダウンロードできない場合は、driver をダウンロードする場所と データ移動 ゲートウェイ マシンのコピー先を指示するメッセージが表示されます。それが完了したら、install mysql コマンドを再度実行します。

   それ以外の場合は、driver の EULA が表示されます。

3. 次のいずれかを実行します。

   * 何度も [Enter] を押すと、EULA 全体をスクロールできます。
   * 何度もスペースバーを押すと、EULA 全体をスピーディにスクロールできます。
   * q を押すと、ライセンス テキストが終了し、EULA 受諾オプションが表示されます。

4. 次のいずれかを実行します。

   * 「y」を入力して [Enter] を押すと、EULA が受諾され、インストールが開始します。

   * 「n」を入力して [Enter] を押すと、EULA が拒否され、インストールが終了します。

   * 「v」を入力して [Enter] を押すと、EULA が再表示されます。

   driver がインストールされます。

driver の更新

提供された driver をインストールする前に前のバージョンの driver をアンインストールしたい場合は、更新コマンドを実行します。

driver をダウンロードして更新するには:

1. データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:

   opt/qlik/gateway/movement/drivers/bin

2. 次のコマンドを実行します:

   構文:

   ./update mysql

   アクセス制限または技術的な問題により driver をダウンロードできない場合は、driver をダウンロードする場所と データ移動 ゲートウェイ マシンのコピー先を指示するメッセージが表示されます。それが完了したら、update mysql コマンドを再度実行します。

   それ以外の場合は、driver の EULA が表示されます。

3. 次のいずれかを実行します。

   * 何度も [Enter] を押すと、EULA 全体をスクロールできます。
   * 何度もスペースバーを押すと、EULA 全体をスピーディにスクロールできます。
   * q を押すと、ライセンス テキストが終了し、EULA 受諾オプションが表示されます。

4. 次のいずれかを実行します。

   * 「y」を入力して [Enter] を押すと、EULA が受諾され、インストールが開始します。
   * 「n」を入力して [Enter] を押すと、EULA が拒否され、インストールが終了します。
   * 「v」を入力して [Enter] を押すと、最初から EULA をレビューできます。

   古い driver がアンインストールされ、新しい driver がインストールされます。

driver のアンインストール

driver をアンインストールする場合は、アンインストール コマンドを実行します。

driver をアンインストールするには:

1. このコネクタを使用するように構成されているすべてのタスクを停止します。

2. データ移動 ゲートウェイ マシンで、作業ディレクトリを次に変更します:

   opt/qlik/gateway/movement/drivers/bin

3. 次のコマンドを実行します:

   構文:

   ./uninstall mysql

   driver がアンインストールされます。

### ドライバーの手動インストール

自動ドライバーのインストールが正常に完了しなかった場合にのみ、driver を手動でインストールするようにしてください。

Data Movement gateway がインストールされたら、mysql-connector-odbc-&lt;バージョン&gt;.x86\_64.rpm ドライバーをダウンロードします。サポートされているバージョンへの直接ダウンロード リンクは、/opt/qlik/gateway/movement/drivers/manifests/mysql.yaml の binary-artifacts にあります。ダウンロードが完了したら、RPM を Data Movement gateway マシンにコピーします。

Data Movement gateway サーバーで、シェル プロンプトを開き、次の手順を実行します。

1. Data Movement gateway サービスを停止します。

   sudo systemctl stop repagent

2. 必要に応じて、サービスが停止されたことを確認します。

   sudo systemctl status repagent

   ステータスは次のようになっているはずです。

   Active: inactive (dead) since &lt;timestamp&gt; ago

3. ドライバーを Data Movement gateway マシンにインストールします。

4. 作業ディレクトリを &lt;Data Movement gateway\_Install\_Dir&gt;/bin に変更します。

5. 次のように、ドライバーの場所を `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 ファイル内のドライバーの場所が更新されます。

6. 必要に応じて、ドライバーの場所がコピーされていることを確認します。

   ```
   cat site_arep_login.sh
                           
   ```

7. 次の例のように、/etc/odbcinst.ini ファイルに MySQL のエントリが含まれていることを確認します。

   ` [MySQL ODBC 8.0 Unicode Driver]
                            ` ` Driver   = /usr/lib64/libmyodbc8w.so
                            ` ` UsageCount  = 1
                            `

8. Data Movement gateway サービスを起動します。

   sudo systemctl start repagent

9. 必要に応じて、サービスが開始されたことを確認します。

   sudo systemctl status repagent

   ステータスは次のようになっているはずです。

   Active: active (running) since &lt;timestamp&gt; 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.  `

* 4 バイトの絵文字をレプリケートする必要がある場合は、ターゲット スキーマの文字セットを utf8mb4 に設定する必要があります。

* ソース テーブルに多数の列が含まれている場合、MySQL の既定の最大行サイズは 8126 バイトであるため、MySQL は `Row size too large (> 8126)` エラーを返す可能性があります。SaaS アプリケーションソースを使用している場合、このエラーは実行時に発生します。データベースなどの他のソース タイプを使用している場合、エラーはタスクの準備中に発生します。この制限に対処するには、次のいずれかのアプローチを使用します。

  * **推奨されるアプローチ:** データが取り込まれた後、ターゲットで不要な列を削除します。実行する方法については、「[列の削除](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm#Removing)」を参照してください。エラーが引き続き発生する場合は、さらに列を削除してください。

  * **代替の回避策:** すべてのソース列をターゲットテーブルに含める必要がある場合、MySQL データベースの特定の設定でこれを実現できます。その 1 つが、行サイズを収容できる十分な大きさに MySQL のページ サイズを増やす方法です。

    情報メモ行サイズが 65,535 バイトの制限を超えるソースの場合、ソース項目をより大きな行サイズをサポートするデータ型に変換する必要があります。これは、最大行レコード サイズに関する既知の制限によるものです。詳細については、「[MySQL の行サイズ制限に関するドキュメント](https://dev.mysql.com/doc/refman/8.4/en/column-count-limit.html)」を参照してください。

## データ型

ネイティブ データ タイプの情報は保持され、データセット ビューの [ネイティブ データ タイプ] 列に表示されます。列が表示されない場合は、データ セット ビューの列ピッカーを開いて、 [ネイティブ データ タイプ] 列を選択する必要があります。

対応しているデータ型

| Qlik Cloud データ型 | MySQL データ型 |
| --- | --- |
| BOOL | BOOL |
| BYTES | 長さが =&gt; 1 かつ =&lt; 8095 の場合:<br><br>VARBINARY (Length)<br><br>長さが =&gt; 8096 かつ =&lt; 65535 の場合:<br><br>BLOB<br><br>長さが =&gt; 65536 かつ =&lt; 16777215 の場合:<br><br>MEDIUMBLOB<br><br>長さが =&gt; 16777216 かつ =&lt; 2147483647 の場合:<br><br>LONGBLOB |
| DATE | DATE |
| TIME | TIME |
| DATETIME | スケールが 0 以上で 6 以下の場合は:<br><br>DECIMAL (p,s)<br><br>スケールが 7 以上で 12 以下の場合は:<br><br>VARCHAR (37) |
| INT1 | TINYINT |
| INT2 | SMALLINT |
| INT4 | INTEGER |
| INT8 | BIGINT |
| NUMERIC | スケールが =&gt; 0 かつ =&lt; 30 の場合:<br><br>DECIMAL (p,s)<br><br>スケールが =&gt; 31 かつ =&lt; 100 の場合:<br><br>VARCHAR (45) |
| REAL4 | FLOAT |
| REAL8 | DOUBLE |
| STRING | 長さが =&gt; 1 かつ =&lt; 8095 の場合:<br><br>VARCHAR (Length)<br><br>長さが =&gt; 8096 かつ =&lt; 65535 の場合:<br><br>TEXT<br><br>長さが =&gt; 65536 かつ =&lt; 16777215 の場合:<br><br>MEDIUMTEXT<br><br>長さが =&gt; 16777216 かつ =&lt; 2147483647 の場合:<br><br>LONGTEXT |
| UINT1 | UNSIGNED TINYINT |
| UINT2 | UNSIGNED SMALLINT |
| UINT4 | UNSIGNED INTEGER |
| UINT8 | UNSIGNED BIGINT |
| WSTRING | 長さが =&gt; 1 かつ =&lt; 8095 の場合:<br><br>VARCHAR (Length)<br><br>長さが =&gt; 8096 かつ =&lt; 65535 の場合:<br><br>TEXT<br><br>長さが =&gt; 65536 かつ =&lt; 16777215 の場合:<br><br>MEDIUMTEXT<br><br>長さが =&gt; 16777216 かつ =&lt; 2147483647 の場合:<br><br>LONGTEXT |
| BLOB | [無制限の LOB サイズを許可] オプションが有効な場合:<br><br><ul> <li>LONGBLOB</li> </ul><br><br>[LOB サイズを制限] オプションが有効な場合:<br><br><ul> <li> <p>指定された値が 63 KB 以下の場合:</p> <p>BLOB</p> </li> </ul><br><br><ul> <li> <p>指定された値が 64 KB 以上の場合:</p> <p>LONGBLOB</p> </li> </ul><br><br>LOB サイズの制限については、「[Metadata](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings-metadata.htm#ar_tasks_custom_1624443382_1693100)」を参照してください。 |
| NCLOB | [無制限の LOB サイズを許可] オプションが有効な場合:<br><br><ul> <li>TEXT</li> </ul><br><br>[LOB サイズを制限] オプションが有効な場合:<br><br><ul> <li> <p>指定された値が 63 KB 以下の場合:</p> <p>TEXT</p> </li> </ul><br><br><ul> <li> <p>指定された値が 64 KB 以上の場合:</p> <p>LONGTEXT</p> </li> </ul><br><br>LOB サイズの制限については、「[Metadata](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings-metadata.htm#ar_tasks_custom_1624443382_1693100)」を参照してください。 |
| CLOB | [無制限の LOB サイズを許可] オプションが有効な場合:<br><br><ul> <li>TEXT CHARACTER SET UTF-16</li> </ul><br><br>[LOB サイズを制限] オプションが有効な場合:<br><br><ul> <li> <p>指定された値が 63 KB 以下の場合:</p> <p>TEXT CHARACTER SET UTF-16</p> </li> </ul><br><br><ul> <li> <p>指定された値が 64 KB 以上の場合:</p> <p>LONGTEXT CHARACTER SET UTF-16</p> </li> </ul><br><br>LOB サイズの制限については、「[Metadata](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/replicating-settings-metadata.htm#ar_tasks_custom_1624443382_1693100)」を参照してください。 |