Das Verfahren zur Benutzung der
FEDERATED
-Tabellen ist sehr einfach.
Normalerweise betreiben Sie zwei Server, entweder auf demselben
oder auf verschiedenen Hosts. (Es ist möglich, allerdings nicht
sehr sinnvoll, dass eine FEDERATED
-Tabelle
eine andere Tabelle verwendet, die von demselben Server
verwaltet wird.)
Zuerst muss auf dem Remote-Server eine Tabelle liegen, auf die
Sie mit einer FEDERATED
-Tabelle zugreifen
möchten. Angenommen, die entfernte Tabelle liegt in der
Datenbank federated
und ist folgendermaßen
definiert:
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 DEFAULT CHARSET=latin1;
Im Beispiel wird eine MyISAM
-Tabelle
verwendet, aber es könnte auch eine andere Speicher-Engine
benutzt werden.
Nun erstellen Sie eine FEDERATED
-Tabelle auf
dem lokalen Server, um auf die entfernte Tabelle zuzugreifen:
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://root@remote_host:9306/federated/test_table';
(Hinweis:
CONNECTION
ersetzt
COMMENT
, was in früheren MySQL-Versionen
verwendet wurde.)
Die Struktur dieser Tabelle muss der Struktur der entfernten
Tabelle genau entsprechen, nur die Tabellenoption
ENGINE
ist FEDERATED
und
die Tabellenoption CONNECTION
ist ein
Verbindungsstring, welcher der
FEDERATED
-Engine sagt, wie sie sich mit dem
entfernten Server verbinden kann.
Die FEDERATED
-Engine erzeugt in der
federated
-Datenbank nur die
test_table.frm
-Datei.
Die Remote-Host-Daten geben an, mit welchem entfernten Server
sich Ihr lokaler Server verbindet, und die Datenbank- und
Tabelleninformationen geben an, welche entfernte Tabelle als
Datenquelle verwendet werden soll. Da im vorliegenden Beispiel
der entfernte Server als remote_host
auf Port
9306 definiert ist, muss ein MySQL-Server auf dem Remote-Host
laufen und auf Port 9306 lauschen.
Die allgemeine Form eines Verbindungsstrings in der Option
CONNECTION
ist:
scheme
://user_name
[:password
]@host_name
[:port_num
]/db_name
/tbl_name
Vorläufig wird nur mysql
als Wert für
scheme
akzeptiert. Das Passwort und
die Port-Nummer sind optional.
Im Folgenden sehen Sie einige Beispiele für Verbindungsstrings:
CONNECTION='mysql://username:password@hostname:port/database/tablename' CONNECTION='mysql://username@hostname/database/tablename' CONNECTION='mysql://username:password@hostname/database/tablename'
CONNECTION
ist für die Angabe des
Verbindungsstrings nicht optimal geeignet und wird
wahrscheinlich irgendwann ersetzt. Für Anwendungen mit
FEDERATED
-Tabellen müssen Sie sich daher
merken, dass diese Anwendungen modifiziert werden müssen, wenn
sich das Format für die Verbindungsinformationen eines Tages
ändert.
Da jedes Passwort, das Sie im Verbindungsstring angeben, als
einfacher Text gespeichert wird, ist es für jeden Benutzer
ersichtlich, der SHOW CREATE TABLE
oder
SHOW TABLE STATUS
für die
FEDERATED
-Tabelle ausführen oder die
TABLES
-Tabelle in der
INFORMATION_SCHEMA
-Datenbank abfragen darf.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.