MySQL 跨服务器选择查询

标签 mysql client cross-server

是否可以使用 MySQL 客户端编写跨服务器选择查询。基本上设置如下。

服务器 IP       数据库
---------       --------
1.2.3.4       测试
a.b.c.d       测试

我想编写一个查询,该查询将从 1.2.3.4 上的测试数据库中的表中选择行,并将表中的结果插入到 a.b.c.d 上的测试数据库中
我的服务器相距数英里,因此我将打开一个 SSH 隧道来连接两者。

任何指针?

最佳答案

在其中一台服务器上使用联合表怎么样? 根据您将在查询中使用的远程表创建联合表,并像您的数据库都是本地的一样运行您的查询。以下示例来自 MySQL site

使用 FEDERATED 表的过程非常简单。通常,您有两台服务器在运行,它们要么在同一主机上,要么在不同的主机上。 (FEDERATED 表可以使用由同一服务器管理的另一个表,尽管这样做没有什么意义。)

首先,您必须在远程服务器上有一个要使用 FEDERATED 表访问的表。假设远程表在联邦数据库中,并且定义如下:

CREATE TABLE test_table (
    id     INT(20) NOT NULL AUTO_INCREMENT,
    name   VARCHAR(32) NOT NULL DEFAULT '',
    other  INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY  (id),
    INDEX name (name),
    INDEX other_key (other)
)
ENGINE=MyISAM 
CHARSET=latin1;

该示例使用 MyISAM 表,但该表可以使用任何存储引擎。

接下来,在本地服务器上创建一个 FEDERATED 表,用于访问远程表:

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

(在 MySQL 5.0.13 之前,使用 COMMENT 而不是 CONNECTION。)

关于MySQL 跨服务器选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/810349/

相关文章:

c - 将文件从客户端发送到服务器

C# 异步套接字服务器接收问题

c++ - 在windows平台下,比如xp,win7,有没有redis的好用的C++客户端?

sql-server - 通过经典 ASP 从另一个存储过程调用存储过程时出现问题

java - 如何通过 joda 中的 id 知道时区与 GMT 的偏移量?

MySQL存储过程从秒查询返回变量值?

Mysql授予对所有数据库的权限,少数除外

php - 不要关闭我页面中的错误

javascript - 避免 x 域解决方案

javascript - 在 Javascript 中访问远程窗口的 url