CP4D（5.0.3）から TiDB にJDBC接続でアクセスしてみた。

# 背景や前提事項
- 当記事では、Software版のIBM Cloud Pak for Data から、クラウドデータベースであるTiDB（MySQL互換,PingCAP社製）に対して、JDBC接続を用いてアクセスした手順を記載しています
- 本記事に記載される手順は2024年12月時点での各種環境に依拠しています
- 本記事に記載される内容は、その結果を必ずしも保証するものでは有りません
- TiDBのアカウントは作成済という前提で記載しています
    - アカウント作成は、以下URLからお試しください。Google アカウントとも連携しているので簡単に作成できます
        - https://tidbcloud.com

# 手順

## CP4DでJDBCドライバーUploadを有効化する。
- 以下ドキュメントを参考に実施します

https://www.ibm.com/docs/ja/cloud-paks/cp-data/5.0.x?topic=environment-enabling-users-upload-jdbc-drivers

### コマンドラインでの実施結果
- パッチ適用
```
[root@localhost ~]# oc patch ccs ccs-cr \
--namespace=${PROJECT_CPD_INST_OPERANDS} \
--type=merge \
--patch '{"spec": {"wdp_connect_connection_jdbc_drivers_repository_mode": "enabled"}}'
ccs.ccs.cpd.ibm.com/ccs-cr patched
[root@localhost ~]# 
```

- ステータスの確認
- 下記コマンドの実行結果が、InProgressになり（なるまで少しかかります）、その後Completed に変わるまで待ちます
- 数分かかります
```
[root@localhost ~]# while true; do oc get ccs ccs-cr --namespace=${PROJECT_CPD_INST_OPERANDS} | grep ccs-cr; echo; sleep 30; done

〜　中略　〜

ccs-cr   9.3.0     9.3.0        InProgress   33d

ccs-cr   9.3.0     9.3.0        InProgress   33d

ccs-cr   9.3.0     9.3.0        InProgress   33d

ccs-cr   9.3.0     9.3.0        Completed   33d

^C
[root@localhost ~]# 
```


## CP4Dにて汎用JDBC接続を作成する

### MySQLのJDBCドライバークラスを確認する

https://dev.mysql.com/doc/connector-j/en/connector-j-reference-driver-name.html

- 以下がJDBCドライバークラスです

```
com.mysql.cj.jdbc.Driver
```


### MyuSQL のJDBCコネクターを手元にダウンロードする

ドライバーはこちらから入手しました

https://dev.mysql.com/downloads/connector/j/

- ログイン画面を経て、以下から「Download Now」をクリックしてファイルをダウンロードします

![スクリーンショット 2024-12-14 15.44.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/46d20b88-d7ef-88fd-561c-c6bae35598a3.png)

- 以下、ダウンロードしました
```
shumpei.kubo@ShumpeinoMacBook-Pro Downloads % ls -ltra | grep mysql | grep 9.1
-rw-r--r--@    1 shumpei.kubo  staff   5319565 12 14 15:44 mysql-connector-j-9.1.0.zip
shumpei.kubo@ShumpeinoMacBook-Pro Downloads % 
```

### TiDB の接続情報を確認します
- 以下、別の記事で記載していますのでご参照ください
- [TiDB にDBerver で接続してみた/手順/TiDBにて/接続情報を確認する](https://qiita.com/Shumpei_Kubo/items/7c174f3c9f0e7145060e#%E6%8E%A5%E7%B6%9A%E6%83%85%E5%A0%B1%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B)


### CP4D の接続画面より、JDBC接続を作成する。

- CP4Dの「接続性」画面から新規接続をクリック

![スクリーンショット 2024-12-14 15.47.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/71c6291f-b232-7f54-329f-52be808518ba.png)

- 検索窓で「JDBC」と入力して「汎用JDBC」を選択し、「次へ」をクリック
![スクリーンショット 2024-12-14 15.50.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/240aa322-c1d7-fa7a-c52d-69679ce9b349.png)



- 名前や説明（オプション）を入力し、「JDBCをドライバー・ファイル」の「ファイルのアップロード」をクリックします
![スクリーンショット 2024-12-14 16.00.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/94bf9acd-9817-1dea-8c97-fb2fc01ec716.png)

- 下記画面が表示されたら、ファイルをドラッグ＆ドロップします
![スクリーンショット 2024-12-14 16.01.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/ba180938-58ed-15ea-aaa9-ec1b683701ab.png)

- 以下の表示になったら、「アップロード」をクリックします
![スクリーンショット 2024-12-14 16.02.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/5339615c-8006-25b2-b4fe-0107a52469d1.png)

![スクリーンショット 2024-12-14 16.03.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/33c20831-b4cb-3179-1077-9e38ed58cfd8.png)

- アップロードが環境したら以下の画面になりますので、「閉じる」をクリックします
![スクリーンショット 2024-12-14 16.06.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/35c58162-70f1-f826-108f-b1e88addeab7.png)





![スクリーンショット 2024-12-14 16.16.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/859d3155-ef95-c298-c3dc-39de9b4016b2.png)


![スクリーンショット 2024-12-14 16.16.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/2f6e94b3-42a2-8df9-6887-2f2c8b1a64ac.png)

- 「接続の詳細」箇所で、以下の通りJDBCドライバーURLとJDBCドライバー・クラスを入力します
![スクリーンショット 2024-12-14 18.32.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/ff4874ee-0f78-e1e5-7702-3de69ff6f1b9.png)

- JDBCのURL入力例は、以下の通りです
```
jdbc:mysql://[TiDB’ｓURL].com:4000/[database]
```

- また、再掲ですが、JDBCドライバードライバー・クラスは、下記です
```
com.mysql.cj.jdbc.Driver
```

- 認証情報を入力します
- 「入力メソッド」では「資格情報を手動で入力します」
![スクリーンショット 2024-12-14 18.40.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/690d35b4-c083-ccc0-1820-fa08d298d03f.png)

- SSL対応にチェックを入れます

![スクリーンショット 2024-12-14 18.43.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/1276acfe-7882-fcbc-d5c8-f3daa763690b.png)

- 「接続のテスト」をクリックして正常に接続されることを確認します
![スクリーンショット 2024-12-14 18.44.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/247c2cf3-9d77-3b1a-094b-319c6764c7fe.png)


- 画面右下の「作成」をクリックします
![スクリーンショット 2024-12-14 18.45.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/4ff30a81-f91d-4634-7f1c-7ff17d972451.png)


- 接続が作成されました

![スクリーンショット 2024-12-14 18.46.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295123/44887e4f-e48f-ff85-3d63-8a965d748440.png)

# 後続作業
- 本記事では、外部データソースとしてのTiDBへの接続を実施しました
- 後続の別記事では、当該接続を経て、TiDBに格納されたデータのメタデータをインポートしてみます