Maison >base de données >tutoriel mysql >Comment puis-je effectuer des requêtes MySQL SELECT inter-serveurs à l'aide de tables fédérées ?
MySQL fournit un mécanisme pour interroger des données sur différents serveurs de base de données grâce à l'utilisation de tables fédérées. Cela peut être particulièrement utile lorsque les serveurs sont éloignés et que les connexions directes ne sont pas réalisables.
Dans le scénario que vous avez décrit, avec deux serveurs MySQL en 1.2.3.4 et a.b.c.d, chacun hébergeant une base de données nommée Test, vous pouvez utilisez une table fédérée pour sélectionner des lignes d'un serveur et les insérer dans une table sur l'autre.
Pour créer une table fédérée, vous devez d'abord établir un tunnel SSH entre les deux serveurs. Cela vous permettra de vous connecter à un serveur (le serveur distant) via l'autre (le serveur local).
Une fois le tunnel SSH établi, vous pouvez créer la table fédérée sur le serveur local comme suit :
CREATE TABLE federated_table ( id INT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(32) NOT NULL DEFAULT '', other INT(20) NOT NULL DEFAULT '0', INDEX name (name), INDEX other_key (other) ) ENGINE=FEDERATED DEFAULT CHARSET=latin1 CONNECTION='mysql://fed_user@remote_host:port/database_name/table_name';
où :
Une fois la table fédérée créé, vous pouvez y exécuter des requêtes SELECT pour récupérer les données de la table distante. Les résultats de la requête peuvent ensuite être insérés dans une table sur le serveur local à l'aide de l'instruction INSERT.
Voici un exemple de requête qui sélectionne les lignes de la table fédérée et les insère dans une table locale nommée local_table :
INSERT INTO local_table (id, name, other) SELECT id, name, other FROM federated_table;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!