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';
其中:
一次创建联合表后,您可以对其执行 SELECT 查询以从远程表中检索数据。然后可以使用 INSERT 语句将查询结果插入到本地服务器上的表中。
以下示例查询从联合表中选择行并将它们插入到名为 local_table 的本地表中:
INSERT INTO local_table (id, name, other) SELECT id, name, other FROM federated_table;
以上是如何使用联合表进行跨服务器MySQL SELECT查询?的详细内容。更多信息请关注PHP中文网其他相关文章!