MySQL: ВЫБРАТЬ с другого сервера
Боюсь, что уже знаю ответ на свой вопрос, но все равно спрошу:
Могу ли я получить доступ к данным, хранящимся на другом сервере, когда есть два сервера БД MySQL?
Другими словами: могу ли я как-то сделать это:
INSERT INTO table (x, y, z)
SELECT x, y, x+y
FROM [otherserver].[database].[table]
Действительно ли ответ так же короток, как "Нет"?
3 ответа
Вы можете настроить объединенные таблицы в MySQL, чтобы выполнить то, что вы пытаетесь сделать. Есть некоторые ограничения.
http://dev.mysql.com/doc/refman/en/federated-storage-engine.html http://dev.mysql.com/doc/refman/en/federated-usagenotes.html
CREATE TABLE `remote_table`(
`foo` VARCHAR(100),
UNIQUE KEY(`foo`(30))
) ENGINE=FEDERATED CONNECTION='mysql://thedomain.com:3306/remotedbname/remotetablename';
Затем запросите его, как и любую другую таблицу, с помощью SELECT, UPDATE, INSERT, DELETE.
Вы также можете сделать это. Допустим, вы находитесь в целевом поле (куда вы хотите скопировать таблицы):
-bash$ mysqldump -u user -p password -h remote_host --databases \
db_name --tables table1 table2 table3 | mysql -u user -p password \
-D local_db_name
Это извлечет данные с удаленного хоста с помощью mysqldump и вставит их на ваш локальный хост.