恐怕我已经知道我的问题的答案,但我还是会问:
当有两台 MySQL 数据库服务器时,我可以访问存储在另一台服务器上的数据吗?
换句话说:我可以以某种方式做到这一点:
INSERT INTO table (x, y, z)
SELECT x, y, x+y
FROM [otherserver].[database].[table]
答案真的像“否”那么短吗?
恐怕我已经知道我的问题的答案,但我还是会问:
当有两台 MySQL 数据库服务器时,我可以访问存储在另一台服务器上的数据吗?
换句话说:我可以以某种方式做到这一点:
INSERT INTO table (x, y, z)
SELECT x, y, x+y
FROM [otherserver].[database].[table]
答案真的像“否”那么短吗?
您可以在 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 从远程主机提取数据并将其插入本地主机。