专业编程教程与实战项目分享平台

网站首页 > 技术文章 正文

【MySQL】Federated 引擎与 Federated Server 访问远程数据

ins518 2024-11-02 12:59:42 技术文章 11 ℃ 0 评论

文中使用的MySQL版本为5.6。

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

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

1. 开启Federated引擎

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

show engines;

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

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

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

2. 创建Federated Server连接

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

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

Error Code: 1432. Can't 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'
);

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

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

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

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表