Объединение таблиц с двух разных серверов
У меня есть два разных сервера server1
и server2
, теперь у меня db1
в server1
и db2
в server2
.
Я пытаюсь объединить эти две таблицы в MySQL следующим образом.
Select a.field1,b.field2
FROM [server1, 3306].[db1].table1 a
Inner Join [server2, 3312].[db2].table2 b
ON a.field1=b.field2
Но я получаю ошибку. Возможно в MYSQL.
Ответы
Ответ 1
Да, это возможно в MySQL.
Аналогичные вопросы заданы ранее. Для этого вы должны использовать FEDERATED ENGINE. Идея такова:
Для использования того, как вы хотите, вы должны иметь федеративную таблицу на основе таблицы в другом удаленном месте. Структура таблицы должна быть точно такой же.
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';
[Исходный ответ]
Ответ 2
Репликация будет альтернативным и подходящим решением.
server1 - db1 → replicate to server2. (теперь db1 и db2 будут на одном сервере server2. Соединение будет простым).
ПРИМЕЧАНИЕ. Если сервер2 достаточно способен загружать db1 с точки зрения сохранения/процесса и т.д., тогда вэнь может выполнить репликацию. Как сказал @brilliand, да Federated будет делать ручную работу и медленный процесс.