0

我有客户端-服务器应用程序,服务器需要从所有客户端节点读取数据。我所有的节点+服务器都在亚马逊实例上。我想不出更好的方法来设置客户端与服务器通信。我目前有两个选择:

a) ssh 隧道

b) mysql 联合表 /engine

我已成功设置 ssh 隧道,但我正在寻找基于联合引擎的解决方案。

我在双方都启用了联合引擎,但是当我尝试连接失败时。问题是如何设置联合引擎以相互通信,以及这与 mysql ssl 有什么关系。我们是否需要启用和设置 mysql ssl。

这是我的方法:

客户

create database FED_remote_db;
use FED_remote_db;
create table test_data(id int(11) auto_increment primary key, name varchar(20) , dated timestamp);
create user 'fed_user'@'localhost'   identified by 'somepassword';
grant select on FED_remote_db.*  to  'fed_user'@'localhost' identified by 'somepassword';
flush privileges;

服务器

create database FED_server_db;
use FED_server_db;
create server fed_con foreign data wrapper mysql options(user 'fed_user',password 'somepassword',host 'client-ip-address',port 3307,database 'FED_remote_db');

create table test_data(id int(11) auto_increment primary key, name varchar(20) , dated timestamp) 
 ENGINE=FEDERATED 
 connection 'fed_chml/test_data';

在服务器端测试

use FED_server_db;
select * from  test_data;
ERROR 1429 (HY000): Unable to connect to foreign data source: Can't connect to MySQL server on 'client-ip-address' (110)

*client-ip-address 是实际的 IP 地址

我需要在服务器/客户端启用一些端口或更改 mysql 配置吗?

如果我可以通过 ssh 访问客户端,这将如何帮助联合单位通信?

4

1 回答 1

0

大多数情况下,当您在 EC2 中的两个实例之间遇到通信问题时,这是安全组的问题。我建议将两台机器放在同一个安全组中,并确保将安全组添加到自身。

此外,我会研究 mysql 联合是否需要除了众所周知的客户端端口之外的额外端口。

于 2014-06-06T05:41:29.020 回答