Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Cross Server Select-Abfrage

Wie wäre es mit föderierten Tabellen auf einem der Server? Erstellen Sie die föderierten Tabellen basierend auf den Remote-Tabellen, die Sie in der Abfrage verwenden, und führen Sie Ihre Abfrage einfach so aus, als ob Ihre Datenbank vollständig lokal wäre. Beispiel unten von der MySQL-Site

Das Verfahren zur Verwendung von FEDERATED-Tabellen ist sehr einfach. Normalerweise laufen zwei Server, entweder beide auf demselben Host oder auf verschiedenen Hosts. (Es ist möglich, dass eine FEDERATED-Tabelle eine andere Tabelle verwendet, die von demselben Server verwaltet wird, obwohl dies wenig Sinn macht.)

Zunächst muss auf dem Remoteserver eine Tabelle vorhanden sein, auf die Sie mithilfe einer FEDERATED-Tabelle zugreifen möchten. Angenommen, die entfernte Tabelle befindet sich in der föderierten Datenbank und ist wie folgt 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 
CHARSET=latin1;

Das Beispiel verwendet eine MyISAM-Tabelle, aber die Tabelle könnte jede Speicher-Engine verwenden.

Erstellen Sie als Nächstes eine FEDERATED-Tabelle auf dem lokalen Server für den Zugriff auf die entfernte Tabelle:

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

(Verwenden Sie vor MySQL 5.0.13 COMMENT statt CONNECTION.)