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 ?

Comment puis-je effectuer des requêtes MySQL SELECT inter-serveurs à l'aide de tables fédérées ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-27 22:40:13446parcourir

How Can I Perform Cross-Server MySQL SELECT Queries Using Federated Tables?

Requêtes de sélection multi-serveurs MySQL utilisant des 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ù :

  • fed_user est un utilisateur qui a accès à la télécommande table
  • remote_host est l'adresse IP du serveur distant
  • port est le numéro de port de l'instance MySQL sur le serveur distant
  • database_name est le nom de la base de données distante contenant la table
  • table_name est le nom de la table distante

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn