我有两个不同的服务器server1
和server2
,现在我有server1
中的db1
和server2
中的db2
。我试图加入这两个表在MySQL像这样。
Select a.field1,b.field2
FROM [server1, 3306].[db1].table1 a
Inner Join [server2, 3312].[db2].table2 b
ON a.field1=b.field2
但是我犯了一个错误。这在MYSQL中是可能的。
这是一种黑客行为,不是连接,但我使用bash函数让它感觉像是在进行跨服务器查询:
显式版本:
tb2lst(){
echo -n "("
tail -n +2 - | paste -sd, | tr -d "\n"
echo ")"
}
id_list=$(mysql -h'db_a.hostname' -ume -p'ass' -e "SELECT id FROM foo;" | tb2lst)
mysql -h'db_b.hostname' -ume -p'ass' -e "SELECT * FROM bar WHERE foo_id IN $id_list"
+--------|-----+
| foo_id | val |
+--------|-----+
| 1 | 3 |
| 2 | 4 |
+--------|-----+
我编写了一些包装器函数,它们保存在我的bashrc中,因此我的观点是它只是一个命令:
db_b "SELECT * FROM bar WHERE foo_id IN $(db_a "SELECT id FROM foo;" | tb2lst);"
+--------|-----+
| foo_id | val |
+--------|-----+
| 1 | 3 |
| 2 | 4 |
+--------|-----+
至少对于我的用例来说,这将两个查询缝合在一起的速度足够快,以至于输出相当于连接,然后我可以将输出管道到任何需要它的工具中。
请记住,一个查询中的id列表在另一个查询中作为查询文本结束。如果以这种方式“连接”太多数据,操作系统可能会限制查询的长度(https://serverfault.com/a/163390). 所以请注意,对于非常大的数据集来说,这是一个糟糕的解决方案。我发现,对像pymysql这样的mysql库做同样的事情可以绕过这个限制。
复制将是替代和合适的解决方案。
server1-db1-
注意:如果server2在存储/进程等方面足以承担db1的负载,那么wen可以执行复制。正如“辉煌”提到的是的,联邦将使大量的手工工作和缓慢的过程。
之前也有类似的问题。您必须使用联邦引擎来实现这一点。这个想法是这样的:
您必须在另一个远程位置有一个基于该表的联邦表,才能使用您想要的方式。表的结构必须完全相同。
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';
[来源答复]
我构建了一个客户端/服务器聊天应用程序,其中服务器正在侦听IP号码和端口,客户端应该连接到该IP 问题-按以下顺序: > 我在计算机上运行服务器,正在侦听 (127.0.0.1 我还在我的计算机上运行一个客户端(与#1相同的计算机),它成功地连接到服务器(127.0.0.1 我正在从不同的IP运行另一个客户端,但在尝试连接到服务器时(127.0.0.1 我不明白为什么…这是代码: 服务器端: 服务
我正在使用wurstmeister的docker-kafka项目在容器中运行kafka/zoomaster。我使用docker-comup将容器localhost作为变量。 我已经编写了一个Java应用程序,它使用flink连接并使用这个Kafka容器的一个主题。如果我导出一个可运行的罐子,并从我的机器上运行它,它绝对可以正常工作。当我创建下面的图像以从另一个docker容器运行jar时,我在线程
我有一个监听两个不同端口的TCP服务器。我创建了两个不同的套接字,一个在端口8888上,一个在端口6634上。我监听这些端口,然后我在FD_SET中添加两个套接字,并将它们传递给Select()函数...当套接字准备好读取时,我检查FD_ISSET,看看哪个端口上有消息要读取。 不管怎样,当我连接到8888端口时,构思是成功的,我可以向服务器发送和接收。。。当我在客户端ctrl c时,选择函数再次
问题内容: 这是我的问题: 我有服务器A,运行node.js并使用socket.io与客户端(Web浏览器)进行通信。这一切都很好,花花公子。 但是,现在我有了服务器B,也需要通过websocket连接到服务器A,所以我遇到了麻烦。我发现的所有node.js websocket客户端都无法与服务器A上的socket.io一起使用。 所以,这就是我正在努力的情况: 客户端-服务器连接是通过socke
例如,我有两个心率监视器与我的平板电脑配对。我正在使用这样的代码来获取HRM设备列表: 然后,我在GUI中显示一个列表框,其中包含从设备[I]获取的设备名称。名称例如,我选择索引为0的设备。然后我可以访问it人力资源服务和人力资源管理特征: 除了心率,我还需要电池状态。如何访问同一(已选择)设备的电池服务?
日志: 我被困在这里,真的不知道问题是什么。有帮手吗?