データ管理 (DMS) 、MySQLコマンドラインクライアントmysql、サードパーティクライアント、およびMySQL用のサードパーティドライバを使用して、PolarDB-Xデータベースに接続できます。 このトピックでは、mysqlを使用してPolarDB-Xデータベースに接続する方法について説明します。
前提条件
PolarDB-Xを初めて使用するときは、[概要] で説明した操作を実行します。 たとえば、PolarDB-Xインスタンスを作成し、アカウントを作成し、データベースを作成する必要があります。
mysqlがサーバーにインストールされていない場合は、MySQL Webサイトにアクセスして、MySQLクライアントをダウンロードしてインストールします。
mysqlを使用してデータベースに接続する
にログインします。PolarDB for Xscaleコンソール.
上部のナビゲーションバーで、ターゲットインスタンスが配置されているリージョンを選択します。
On theインスタンスページをクリックし、PolarDB-X 2.0タブをクリックします。
対象インスタンスを見つけ、そのIDをクリックします。
- 接続情報 セクションで、インスタンスのプライベートエンドポイントとパブリックエンドポイントを見つけます。 説明 テストのためにインターネット経由でインスタンスにアクセスする必要がある場合は、外部ネットワークアドレス: と エクストラネットポート を使用してインスタンスに接続します。 データベースのセキュリティを確保するため、PolarDB-Xの使用中にプライベートエンドポイントを使用してインスタンスにアクセスすることを推奨します。
- 接続情報 セクションで接続情報を取得したら、次のコマンドを実行してローカルパブリックIPアドレスを取得します。 次に、IPアドレスをインスタンスのホワイトリストに追加します。 ホワイトリストの設定方法の詳細については、「ホワイトリストの設定」をご参照ください。
curl 'https:// api.ipify.org '
- 次のMySQLコマンドを実行してデータベースに接続します。
mysql -h <エンドポイント> -P <ポート番号> -u <ユーザー名> -p -D <データベース名>
パラメーター 説明 例 -h
インスタンスへの接続に使用される内部エンドポイントまたはパブリックエンドポイント。 pxc-****************** .public.polarx.rds.aliyuncs.com
-P
インスタンスへの接続に使用されるポートの番号。 - 内部ネットワーク経由でインスタンスに接続する場合は、インスタンスの内部ポート番号を指定します。
- インターネット経由でインスタンスに接続する場合は、インスタンスのパブリックポート番号を指定します。
説明-p
の文字Pは大文字でなければならないことに注意してください。- デフォルトのポート番号は、3306 です。
3306
-u
インスタンスへの接続に使用されるアカウントのユーザー名。 データベースアカウントの作成方法の詳細については、「アカウントの作成」をご参照ください。 テストユーザー
-p
インスタンスへの接続に使用されるアカウントのパスワード。 説明- パスワードのセキュリティを確保するため、
-p
の末尾にパスワードを指定しないことを推奨します。 コマンドの実行後、パスワードの入力を求められます。 パスワードを入力したら、enterキーを押してデータベースに接続します。 - コマンドでパスワードを指定する場合は、
-p
とパスワードの間にスペースを含めないでください。
passWord123
-D
接続するデータベースの名前。 説明- このパラメーターはオプションです。
- データベースを指定する必要がある場合は、
-D
なしでデータベース名のみを入力できます。
mysql
サードパーティのクライアントを使用してデータベースに接続する
次のクライアントを使用して、PolarDB-Xデータベースに接続できます。 対応する公式Webサイトにアクセスして、クライアントをダウンロードできます。
- MySQL Workbench (推奨)
- SQLyog
- 続編プロ
- Navicat for MySQL
MySQL用のサードパーティ製ドライバーを使用してデータベースに接続する
MySQL用の次のサードパーティドライバを使用して、PolarDB-Xデータベースに接続できます。
- JDBCドライバfor MySQL (コネクタ /J)
- MySQL用のPythonドライバー (コネクタ /Python)
- C ++ ドライバーfor MySQL (コネクタ /C ++)
- MySQL用Cドライバ (コネクタ /C)
- MySQL用ADO.NETドライバ (コネクタ /NET)
- MySQL用ODBCドライバ (コネクタ /ODBC)
- MySQL用PHPドライバ (mysqli、PDO_MYSQL、PHP_MYSQLND)
- MySQL用のPerlドライバ (DBD::mysql)
- Ruby Driver for MySQL (ruby-mysql)
次のコードは、JDBC Driver for MySQL (Connector/J) を使用してPolarDB-Xデータベースに接続する方法の例を示しています。
// JDBC
Class.forName("com.mysql.jdbc.Driver");
接続conn = DriverManager.getConnection("jdbc:mysql:// pxc-****************** .public.polarx.rds.aliyuncs.com:3306/doc_test" 、"doc_test" 、"doc_test_password");
//...
conn.close();
次のコードは、接続プールを使用してアプリケーションからPolarDB-Xデータベースに接続する方法の例を示しています。
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="jdbc:mysql:// pxc-****************** .public.polarx.rds.aliyuncs.com:3306/doc_test" />
<property name="username" value="doc_test" />
<property name="password" value="doc_test_password" />
<property name="filters" value="stat" />
<property name="maxActive" value="100" />
<property name="initialSize" value="20" />
<property name="maxWait" value="60000" />
<property name="minIdle" value="1" />
<property name="timeBetweenEvictionRunsMillis" value="60000" />
<property name="minEvictableIdleTimeMillis" value="300000" />
<property name="testWhileIdle" value="true" />
<property name="testOnBorrow" value="false" />
<property name="testOnReturn" value="false" />
<property name="poolPreparedStatements" value="true" />
<property name="maxOpenPreparedStatements" value="20" />
<property name="asyncInit" value="true" />
</bean>
データベースクエリのタイムアウト期間を設定するベストプラクティス
アプリケーションは、Spring Boot、MyBatis、JDBC Driverなどの一般的なORMフレームワークを使用してデータベースにアクセスできます。 これらのORMフレームワークでは、トランザクション、SQL文、ネットワークパケット転送など、複数のディメンションからのSQLクエリのクライアント側タイムアウト期間を指定できます。 たとえば、Spring Bootにはtransaction_timeout、Mybatisにはstatement_timeout、JDBC MySQL Driverにはquery_timeoutを使用できます。
これらのクライアントのほとんどは、Kill
ステートメントを実行してクエリを中断することによってタイムアウト設定を実装します。 分散データベースでは、Kill
文を頻繁に実行すると、大量のリソースが消費されます。 したがって、アプリケーションからデータベースに接続するときは、上記のタイムアウト設定を頻繁に使用しないことをお勧めします。
ベストプラクティスは、JDBC URLのsocket_timeoutパラメーターを使用して、SQLクエリのタイムアウト期間を指定することです。 このパラメーターで指定されるタイムアウト期間は、TCPプロトコルのタイムアウトメカニズムに基づいて実装されます。 したがって、クエリタイムアウトが発生した場合、Kill
ステートメントは実行されません。 次の例は、socket_timeoutパラメーターを使用してタイムアウト期間を指定する方法を示しています。
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="url" value="jdbc:mysql:// pxc-***** .public.polarx.rds.aliyuncs.com:3306/doc_test?socketTimeout=60000" />
...
<property name="asyncInit" value="true" />
</bean>