首页  >  文章  >  数据库  >  如何使用联合表进行跨服务器MySQL SELECT查询?

如何使用联合表进行跨服务器MySQL SELECT查询?

Linda Hamilton
Linda Hamilton原创
2024-11-27 22:40:13423浏览

How Can I Perform Cross-Server MySQL SELECT Queries Using Federated Tables?

MySQL 使用联合表进行跨服务器选择查询

MySQL 提供了一种通过使用联合表跨不同数据库服务器查询数据的机制。当服务器分开并且直接连接不可行时,这尤其有用。

在您描述的场景中,有两个 MySQL 服务器,分别为 1.2.3.4 和 a.b.c.d,每个服务器托管一个名为 Test 的数据库,您可以使用联合表从一台服务器中选择行并将其插入另一台服务器的表中。

要创建联合表,您首先需要在服务器之间建立 SSH 隧道两台服务器。这将允许您通过另一台服务器(本地服务器)连接到另一台服务器(远程服务器)。

建立 SSH 隧道后,您可以在本地服务器上创建联合表,如下所示:

CREATE TABLE federated_table (
    id     INT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name   VARCHAR(32) NOT NULL DEFAULT '',
    other  INT(20) NOT NULL DEFAULT '0',
    INDEX name (name),
    INDEX other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://fed_user@remote_host:port/database_name/table_name';

其中:

  • fed_user 是有权访问远程的用户table
  • remote_host 是远程服务器的 IP 地址
  • port 是远程服务器上 MySQL 实例的端口号
  • database_name 是远程数据库的名称,其中包含表
  • table_name 是远程表的名称

一次创建联合表后,您可以对其执行 SELECT 查询以从远程表中检索数据。然后可以使用 INSERT 语句将查询结果插入到本地服务器上的表中。

以下示例查询从联合表中选择行并将它们插入到名为 local_table 的本地表中:

INSERT INTO local_table (id, name, other)
SELECT id, name, other FROM federated_table;

以上是如何使用联合表进行跨服务器MySQL SELECT查询?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn