同じサーバ上にいくつかのFEDERATED
テーブルを作成する場合や、FEDERATED
テーブルの作成プロセスをシンプルにしたい場合には、CONNECTION
文字列の時と同じように、サーバ接続パラメータを定義するために
CREATE SERVER
ステートメントを利用する事ができます。
CREATE SERVER
ステートメントのフォーマットは
CREATE SERVERserver_name
FOREIGN DATA WRAPPERwrapper_name
OPTIONS (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 |