* 別サーバのテーブルを参照する [#d1a6c216]
** 同一サーバの別データベースのテーブルの参照 [#n5ebdf4c]
同一サーバの別データベースのテーブルは、 SELECT * FROM foo_db.table1 のようにして参照出来る。
** 別サーバの別データベースのテーブルの参照 [#s82ed5c0]
別サーバの別データベースのテーブルでは上のようには出来ない。当該データベースに参照したいテーブルのコピーを作る必要がある。その方法は、レプリケーションで当該データベースをスレーブにするか、FEDERATEDエンジンを使って当該データベースにFEDERATEDテーブルを作るか、いずれか。
** FEDERATEDテーブルの作り方 [#u731901b]
参照したいテーブルが、ホスト192.168.0.1上のfoo_dbデータベースのusersテーブルだとすると、以下のようなSQLで当該データベースにusersテーブルを作成する。
CREATE TABLE `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` text,
PRIMARY KEY (`user_id`)
)
ENGINE=FEDERATED
DEFAULT CHARSET=utf8
CONNECTION='mysql://db_user:db_pass@192.168.0.1/foo_db/users';
** FEDERATEDエンジンがサポートされているか?を確認 [#qc9af877]
SHOW ENGINES;
SHOW ENGINES;
** 参考 [#p9c4f048]
- http://dev.mysql.com/doc/refman/5.1/ja/federated-storage-engine.html