La procédure pour utiliser les tables
FEDERATED est très simple. Normalement, vous
devez avoir 2 serveurs en focntionnement, sur le même hôte ou
sur deux hôtes distincts. Il est aussi possible pour une table
FEDERATED d'utiliser une autre table gérée
par un autre serveur, mais il y a quelques limitations qui
s'ajoutent.
D'abord vous devez avoir une table sur un serveur distant, à
laquelle vous voulez accéder via la table
FEDERATED. Supposez que la table distante
dans la base federated est définie comme
ceci :
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),
KEY name (name),
KEY other_key (other)
)
ENGINE=MyISAM
DEFAULT CHARSET=latin1 ;
La table ENGINE peut utiliser n'importe quel
moteur de stockage; la table n'est pas obligatoirement une table
MyISAM.
Ensuite, créez une table FEDERATED pour
accéder à la table distante. Le serveur où vous créez la
table FEDERATED est le ``client-serveur''.
Sur ce serveur, créez une table comme ceci :
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),
KEY name (name),
KEY other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
COMMENT='mysql://root@remote_host:9306/federated/test_table';
La structure de cette table doit être exactement la même que
la table distante, hormis le moteur ENGINE
qui doit valoir FEDERATED et l'option de
table COMMENT qui contient la chaîne de
connexion pour spécifier au moteur FEDERATED
comment se connecter au serveur distant.
Le moteur FEDERATED ne crée que le fichier
test_table.frm dans la base de données
federated.
Les informations d'hôte distant représente le serveur sur
lequel votre serveur se connecte en tant que ``client'', et les
informations de tables et de bases qui représentent les
``données''. Dans l'exemple, le serveur distant va fonctionne
en tant que remote_host sur le port 9306 : il
est recommandé de lancer ce serveur pour qu'il soit en attente
sur le port 9306.
La forme générale de la chaîne de connexion de l'optin
COMMENT est la suivante :
scheme://user_name[:password]@host_name[:port_num]:/db_name/tbl_name
Seul le protocole mysql est supporté comme
valeur pour scheme actuellement, et
le numéro de port ainsi que le mot de passe sont optionnels.
Voici quelques exemples de chaînes de connexion :
COMMENT='mysql://username:password@hostname:port/database/tablename' COMMENT='mysql://username@hostname/database/tablename' COMMENT='mysql://username:password@hostname/database/tablename'
L'utilisation de COMMENT pour spécifier la
chaîne de connexion n'est pas optimale, et nous allons
probablement changer cela en MySQL 5.1. Gardez cela en tête que
lorsque vous utilisez les tables FEDERATED,
car cela vous obligera à faire des modifications dans un avenir
proche.
De même, comme le mot de passe est stocké en texte clair dans
la chaîne, il peut être vu par un autre utilisateur avec un
accès à SHOW CREATE TABLE ou SHOW
TABLE STATUS pour la table
FEDERATED.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
