MySQL:从另一台服务器选择

Posted

技术标签:

【中文标题】MySQL:从另一台服务器选择【英文标题】:MySQL: SELECT from another server 【发布时间】:2010-10-05 05:15:18 【问题描述】:

恐怕我已经知道我的问题的答案,但我还是会问:

当有两台 mysql 数据库服务器时,我可以访问存储在另一台服务器上的数据吗?

换句话说:我可以这样做吗:

INSERT INTO table (x, y, z)
   SELECT x, y, x+y
      FROM [otherserver].[database].[table]

答案真的像“否”那么短吗?

【问题讨论】:

"Running MySQL queries on multiple servers" 上的这篇文章听起来像是在解释如何做你想做的事。该链接目前已失效,所以这里是内容from archive.org: 想了一会儿类似的事情,但我不能那样做,因为我们使用复制来......嗯......复制 - 在其他服务器之间。 :) 使用联合表。参考这个:winashwin.wordpress.com/2012/08/22/mysql-federated-table 【参考方案1】:

您可以在 MySQL 中设置联合表来完成您想要做的事情。有一些限制。

http://dev.mysql.com/doc/refman/en/federated-storage-engine.html http://dev.mysql.com/doc/refman/en/federated-usagenotes.html

【讨论】:

这看起来很有趣:) 我的建议:永远不要考虑接触联合表。它们似乎多年未维护,不稳定的东西,难以维护且完全未优化。前方有无限的麻烦【参考方案2】:
CREATE TABLE `remote_table`(
  `foo` VARCHAR(100),
  UNIQUE KEY(`foo`(30))
) ENGINE=FEDERATED CONNECTION='mysql://thedomain.com:3306/remotedbname/remotetablename';

然后像其他任何表一样使用 SELECT、UPDATE、INSERT、DELETE 查询它。

【讨论】:

【参考方案3】:

您也可以这样做。假设您在目标框中(要将表复制到的位置):

-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 从远程主机提取数据并将其插入本地主机。

【讨论】:

显然您可以这样做,但重点是访问位于另一台服务器上的数据,而不是(偶尔)复制数据。

以上是关于MySQL:从另一台服务器选择的主要内容,如果未能解决你的问题,请参考以下文章

为啥我无法从另一台计算机连接到 openfire 服务器?

使用 jQuery post 从另一台服务器调用 URL

从另一台没有工匠的电脑上运行 laravel 服务 css 和 js 不工作 [关闭]

如何使用 C# 从另一台服务器远程管理 IIS?

如何从另一台计算机远程数据库 mysql XAMPP?

Vue.js - 是不是可以使用 Javascript 动态导入从另一台服务器加载组件?