こんにちは、ゲームソリューショングループの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を試してみて、記事にしていきたいと思います。