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 2を使用します。

初期状態でMariaDBがインストールされているため、MySQLとの干渉を防ぐためにアンインストールします。

$ yum list installed | grep mariadb
$ sudo yum remove mariadb-libs

次にMySQL8.0のリポジトリを追加して有効化します。

#MySQL8.0のリポジトリの追加
$ sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
#MySQL5.7のリポジトリの無効化
$ sudo yum-config-manager --disable mysql57-community
#MySQL8.0のリポジトリの有効化
$ sudo yum-config-manager --enable mysql80-community

MySQLクライアントをインストールします。

#MySQLクライアントのインストール
$ sudo yum install -y mysql-community-client
Failing package is: mysql-community-libs-8.0.33-1.el7.x86_64
GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql 
# ⇒MySQLのGPGキーの有効期限切れが原因でエラーが出るため、GPGキーのインポートを行います。
#GPGキーのインポート
$ sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022          
#再度MySQLクライアントのインストール
$ sudo yum install -y mysql-community-client
#インストールされていることの確認
$ mysql --version
mysql  Ver 8.0.33 for Linux on x86_64 (MySQL Community Server - GPL)

これで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を試してみて、記事にしていきたいと思います。