Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête de sélection entre serveurs MySQL

Que diriez-vous d'utiliser des tables fédérées sur l'un des serveurs ? Créez les tables fédérées en fonction des tables distantes que vous utiliserez dans la requête et exécutez simplement votre requête comme si votre base de données était entièrement locale. exemple ci-dessous du site MySQL

La procédure d'utilisation des tables FEDERATED est très simple. Normalement, vous avez deux serveurs en cours d'exécution, tous deux sur le même hôte ou sur des hôtes différents. (Il est possible qu'une table FÉDÉRÉE utilise une autre table gérée par le même serveur, bien que cela n'ait aucun intérêt à le faire.)

Tout d'abord, vous devez disposer d'une table sur le serveur distant à laquelle vous souhaitez accéder à l'aide d'une table FEDERATED. Supposons que la table distante se trouve dans la base de données fédérée et soit définie comme suit :

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;

L'exemple utilise une table MyISAM, mais la table peut utiliser n'importe quel moteur de stockage.

Ensuite, créez une table FEDERATED sur le serveur local pour accéder à la table distante :

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';

(Avant MySQL 5.0.13, utilisez COMMENT plutôt que CONNECTION.)