MySQLFederated引擎与Federated Server访问远程数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQLFederated引擎与Federated Server访问远程数据相关的知识,希望对你有一定的参考价值。

文中使用的mysql版本为5.6。

之前我们有讲过在Oracle数据库中关于远程数据库的访问可以使用DBLinked来实现,那在MySQL中是否也存在类似的方式呢?

答案是肯定的,在MySQL中若想访问远程数据库可以通过开启Federated引擎+映射表实现。

1. 开启Federated引擎

首先了解一下如何开启Federated引擎。由于默认情况下Federated引擎是关闭的状态,那我们先看看当前数据库是否支持Federated引擎。

show engines;

如上图所示,当前数据库是支持Federated引擎的,但是没有开启。那么接下来通过修改配置文件来开启Federated引擎,如下图:

【MySQL】Federated引擎与Federated

至于mysql.cnf文件的存储位置各个不同版本(指的是Docker镜像)的MySQL可能存放路径不一样,本机采用的是linux版的MySQL并且已经挂载到宿主机的指定目录,因此只需要修改宿主机指定位置上的mysql.cnf即可。
在添加完成后重启一下mysql服务,如下图:

【MySQL】Federated引擎与Federated

重新登录一下然后看看是否已经启用,如下图:

【MySQL】Federated引擎与Federated

2. 创建Federated Server连接

其实一般来说直接通过Federated的Connection就可以连接到远程的服务器对应的数据库和表,如下图:

【MySQL】Federated引擎与Federated

(账号、密码和连接地址属于敏感信息都需要打码),这里最大的难点是远程数据库的密码中带有“@”关键字,因此创建的时候就会抛出下面错误:

Error Code: 1432. Cant create federated table. The data source connection string mysql://xxxhe:xxxhe!@#@192.168.xxx.xxx:xxxxxx/spot_paohe/spot_trad is not in the correct format

为了解决这个问题,需要另建一个Federated Server来解决这种特殊字符的问题,以本例子为例需要使用下面的方式创建Federated Server,如下所示:

CREATE SERVER `spot_paohe_client`
FOREIGN DATA WRAPPER mysql
OPTIONS (
HOST 192.168.xxx.xxx,
PORT xxxxxx,
USER xxxhe,
PASSWORD xxxhe!@#,
DATABASE spot_paohe
);

创建完成后可以通过以下命令进行连接,如下图:

【MySQL】Federated引擎与Federated

这样就创建出来了对应的表了,如下图:

【MySQL】Federated引擎与Federated

之后就可以在本地做完所有的数据清洗了。

以上是关于MySQLFederated引擎与Federated Server访问远程数据的主要内容,如果未能解决你的问题,请参考以下文章

使用ping federate与合作伙伴应用程序交换令牌的集成方法是什么?

MySQL远程表访问设置

如何解析 Prometheus 数据

将 Prometheus 抓取的数据转换为数组

Prometheus federation ignoring/dropping # HELPline from metrics

游戏引擎与物理引擎与几何建模内核之间的区别