EC2からTiDB Cloud(Serverless)にTLSを使用して接続してみた

2023.05.17

こんにちは、ゲームソリューショングループのsoraです。
今回は、EC2からTiDB Cloud(Serverless)にTLSを使用して接続してみたことについて書いていきます。

はじめに

TiDBはクラウドネイティブな分散型のNewSQLデータベースです。
TiDB CloudはTiDBをフルマネージドでクラウド上で使えるサービスです。
詳細については、以下記事をご参照ください。

今回は、こちらの公式ページを参考に、EC2サーバからTiDB CloudにTLSを使用して接続してみます。

EC2サーバへのMySQLクライアントのインストール

今回はTiDB Cloudへの接続にMySQLを使用するため、MySQLクライアントをインストールします。
EC2のAMIはAmazon Linux 2023を使用します。

$ sudo dnf -y localinstall  https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
$ sudo dnf -y install mysql mysql-community-client

これでMySQLクライアントがインストールできました。

TiDB Cloudへの接続準備

TiDB Cloudへ接続するための準備をします。
TiDB CloudでServerlessのクラスタを作成した後、クラスタのOverviewからConnectを押下します。
今回使用するTiDBクラスターは東京リージョンでEC2と同じリージョンにしていますが、リージョンが異なっていても接続可能です。
Endpoint TypeをPublic、Connect WithをMySQL CLI、Operating SystemをCentOS/RedHat/Fedoraにします。
Create passwordを押下すると、パスワードが生成されてコマンド内のyour_passwordの部分に記載されます。
コマンドは接続時に使用するため、コピーしておいてください。

EC2からTiDB Cloudへ接続

EC2にSSHで接続して、先ほどのTiDB Cloudへの接続コマンドを実行します。

$ mysql --connect-timeout 15 -u '<user_name>' -h gateway01.ap-northeast-1.prod.aws.tidbcloud.com -P 4000 -D test --ssl-mode=VERIFY_IDENTITY --ssl-ca=/etc/pki/tls/certs/ca-bundle.crt -p<your_password>
mysql>

接続ができたため、簡単なDB操作をしてみます。

mysql> show databases;
+--------------------+                                                          
| Database           |                                                          
+--------------------+                                                          
| INFORMATION_SCHEMA |                                                          
| PERFORMANCE_SCHEMA |                                                          
| mysql              |                                                          
| sample_data        |                                                          
| test               |                                                          
+--------------------+                                                          
5 rows in set (0.00 sec)                                                        

mysql> drop database test;                                                      
Query OK, 0 rows affected (0.28 sec)                                            

mysql> show databases;                                                          
+--------------------+                                                          
| Database           |                                                          
+--------------------+                                                          
| INFORMATION_SCHEMA |                                                          
| PERFORMANCE_SCHEMA |                                                          
| mysql              |                                                          
| sample_data        |                                                          
+--------------------+                                                          
4 rows in set (0.01 sec)

testのデータベースを削除できました。
TiDB Cloud側でも確認してみます。
before after TiDB Cloud側でもtestデータベースが削除されていることが確認できました。

参考にしたページ

Serverless Tierへの TLS 接続
【AWS EC2】Amazon Linux2にMySQLのclientだけをインストールしてRDSに接続する方法
MySQLのGPGキーの有効期限切れのためインストールに失敗する場合の対応方法

最後に

今回は、EC2からTiDB Cloud(Serverless)にTLSを使用して接続してみたことを記事にしました。
今後もTiDBやTiDB Cloudを試してみて、記事にしていきたいと思います。