我有客户端-服务器应用程序,服务器需要从所有客户端节点读取数据。我所有的节点+服务器都在亚马逊实例上。我想不出更好的方法来设置客户端与服务器通信。我目前有两个选择:
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 访问客户端,这将如何帮助联合单位通信?