サーバーの1つでフェデレーションテーブルを使用するのはどうですか?クエリで使用するリモートテーブルに基づいてフェデレーションテーブルを作成し、データベースがすべてローカルであるかのようにクエリを実行します。以下の
FEDERATEDテーブルを使用する手順は非常に簡単です。通常、同じホストまたは異なるホストの両方で2台のサーバーが実行されています。 (FEDERATEDテーブルで、同じサーバーによって管理されている別のテーブルを使用することは可能ですが、そうする意味はほとんどありません。)
まず、FEDERATEDテーブルを使用してアクセスするリモートサーバー上のテーブルが必要です。リモートテーブルが連合データベースにあり、次のように定義されているとします。
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
CHARSET=latin1;
この例ではMyISAMテーブルを使用していますが、テーブルは任意のストレージエンジンを使用できます。
次に、リモートテーブルにアクセスするためのFEDERATEDテーブルをローカルサーバーに作成します。
CREATE TABLE federated_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=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://[email protected]_host:9306/federated/test_table';
(MySQL 5.0.13より前では、CONNECTIONではなくCOMMENTを使用してください。)