同じサーバ上にいくつかのFEDERATEDテーブルを作成する場合や、FEDERATEDテーブルの作成プロセスをシンプルにしたい場合には、CONNECTION
文字列の時と同じように、サーバ接続パラメータを定義するために
CREATE SERVER
ステートメントを利用する事ができます。
CREATE SERVER
ステートメントのフォーマットは
CREATE SERVERserver_nameFOREIGN DATA WRAPPERwrapper_nameOPTIONS (option ...)
server_name
は新しいFEDERATEDテーブルを作成する時、接続文字列として利用されます。
例えば、CONNECTION
文字列と同一のサーバ接続を作成するには
CONNECTION='mysql://root@remote_host:9306/federated/test_table';
以下のステートメントを利用する必要があります。
CREATE SERVER fedlink FOREIGN DATA WRAPPER mysql OPTIONS (USER 'fed_user', HOST 'remote_host', PORT 9306, DATABASE 'federated');
この接続を利用した FEDERATED
テーブルを作成するには、CONNECTIONキーワードも使うのですが、CREATE
SERVERステートメントで使用した名前を指定してください。
CREATE TABLE test_table (
id INT(20) NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL DEFAULT '',
other INT(20) NOT NULL DEFAULT '0',
PRIMARY KEY (id),
INDEX name (name),
INDEX other_key (other)
)
ENGINE=MyISAM
DEFAULT CHARSET=latin1
CONNECTION='fedlink.test_table';
この例の中の接続名には、(fedlink)
接続名と、リンクされる(test_table)テーブル名が、ピリオドで区切られて含まれています。この方法で明確にテーブル名を指定しないと、代わりにローカルテーブルのテーブル名が使用されます。
CREATE SERVERについては
項12.1.11. 「CREATE SERVER 構文」を参照してください。
CREATE SERVER
ステートメントは、CONNECTION文字列と同じ引数を受け入れます。CREATE
SERVER ステートメントは
mysql.servers
テーブルの中のレコードをアップデートします。接続文字列を利用する時、CREATE
SERVERステートメントのオプションと、mysql.serversテーブルカラムなど、テーブルのパラメータ情報を見てください。次にあるのが、参照用のCONNECTION
文字列のフォーマットです。
scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
| 解説 |
CONNECTION 文字列 |
CREATE SERVER オプション |
mysql.servers カラム |
|---|---|---|---|
| 接続スキーム | scheme |
wrapper_name |
Wrapper |
| リモートユーザ | user_name |
USER |
Username |
| リモートパスワード | password |
PASSWORD |
Password |
| リモートホスト | host_name |
HOST |
Host |
| リモートポート | port_num |
PORT |
Port |
| リモートデータベース | db_name |
DATABASE |
Db |
