このトピックでは、PolarDB for MySQLでFEDERATEDテーブルを作成する方法について説明します。
前提条件
管理するクラスターは、リビジョンバージョンが次の要件を満たしているPolarDB for MySQL 8.0クラスターです。
8.0.1.1.28以降
8.0.2.2.4以降
クラスターのバージョンを表示する方法については、「エンジンバージョン」トピックのエンジンバージョンの照会セクションを参照してください。
制限事項
リモートサーバー上のデータベースに接続するには、サーバーのパブリックIPアドレスを使用します。
Elastic Compute Service (ECS) インスタンスでホストされているデータベースにリモート接続することはできません。
FEDERATEDストレージエンジンは、パブリックエンドポイントを使用して現在のクラスターのデータベースにアクセスできません。
手順
リモートサーバーを作成します。 構文:
CREATE SERVER <server_name> FOREIGN DATA WRAPPER mysql OPTIONS (HOST "<host_name>", PORT 3306, USER "<user_name>", PASSWORD "<password>", DATABASE "<db_name>");次の表に、ステートメントで設定できるパラメーターを示します。
パラメーター
説明
server_name
リモートサーバーの名前。
host_name
リモートサーバーのホスト名またはIPアドレス。
user_name
リモートサーバーへの接続を認証するために使用されるユーザー名。
password
リモートサーバーへの接続を認証するために使用されるパスワード。
db_name
リモートサーバーに作成されたデータベースの名前。
FEDERATEDテーブルを作成します。
リモートテーブルに接続してFEDERATEDテーブルを作成するには、3つの部分からなる名前を使用するか、リモートサーバーまたは接続を指定します。
(推奨) 3つの部分からなる名前を使用してFEDERATEDテーブルを作成します。 構文:
CREATE FOREIGN TABLE tbl_name for <server_name>.<remote_db_name>.<tbl_name>;例:
CREATE FOREIGN TABLE t1 for server.test.t1;説明クラスターは、バージョン8.0.2.2.25以降のPolarDB for MySQL 8.0.2である必要があります。
リモートサーバーを指定してFEDERATEDテーブルを作成します。 構文:
CREATE TABLE <tbl_name> (create_definition,...) ENGINE=FEDERATED CONNECTION='<server_name>/<tbl_name>';例:
CREATE TABLE `t1`(`a` VARCHAR(100),UNIQUE KEY(`a`(30))) ENGINE=FEDERATED CONNECTION='server_name/t1';(推奨しません) 接続を指定してFEDERATEDテーブルを作成します。 構文:
CREATE TABLE <tbl_name> (create_definition,...) ENGINE=FEDERATED CONNECTION='<MYSQL://<user_name>:<password>@<host_name>:3306/<db_name>/<tbl_name>';例:
CREATE TABLE `t1`(`a` VARCHAR(100),UNIQUE KEY(`a`(30))) ENGINE=FEDERATED CONNECTION='MYSQL://username:passsword@127.0.0.1:3306/test/t1';説明この方法では、アカウントとパスワードはプレーンテキストで保存されます。 したがって、この方法を使用しないことをお勧めします。