我想从两个不同的数据库服务器使用mysql查询数据。有没有一种方法可以做到这一点,而不必创建联邦数据库,因为google云平台不支持联邦引擎。谢谢!
v1uwarro1#
你可以通过两种方式实现这一点,一种是你已经提到的:1使用联合引擎您可以在这里看到它是如何完成的-从两个不同的服务器连接表。这是一个mysql特定的答案。2在另一台服务器上设置多源复制并查询该服务器您可以使用复制通道轻松设置多源复制在这里查看他们的官方文件-https://dev.mysql.com/doc/refman/8.0/en/replication-multi-source-tutorials.html如果您的mysql版本较旧,而复制通道不可用,则可以使用许多第三方复制器中的一个,如tungsten replicator。p、 在mysql中没有像postgresql中的fdw这样的东西。跨服务器的连接在其他数据库管理系统中很容易实现,但在mysql中却不可能。
6yt4nkrj2#
除了@montypython的出色响应之外,还有第三种方法,尽管有点麻烦,但如果您可能无法使用联邦引擎,并且也无法管理数据库复制,就可以这样做。使用etl工具来完成这项工作在那一天,我遇到了一个非常类似的问题:我必须连接来自两个独立数据库服务器的数据,这两个服务器我都没有任何管理权限。我最终建立了pentaho的etl工具套件,从两个数据库中提取数据,转换if(基本上让pentaho对这两个数据集都做了大量工作),并将其加载到我自己的本地数据库引擎中,在那里我得到了我所需的合并和处理的数据。请注意,这是一个很大的工作(你必须“教”你的etl工具你需要什么,取决于你使用什么工具,它可能涉及相当多的编码),但一旦你完成了,你可以安排工作自动发生在定期,所以你总是有你的本地处理/合并数据随时可访问。fwiw,我用了pentaho的社区版,就像啤酒一样免费
2条答案
按热度按时间v1uwarro1#
你可以通过两种方式实现这一点,一种是你已经提到的:
1使用联合引擎
您可以在这里看到它是如何完成的-从两个不同的服务器连接表。这是一个mysql特定的答案。
2在另一台服务器上设置多源复制并查询该服务器
您可以使用复制通道轻松设置多源复制
在这里查看他们的官方文件-https://dev.mysql.com/doc/refman/8.0/en/replication-multi-source-tutorials.html
如果您的mysql版本较旧,而复制通道不可用,则可以使用许多第三方复制器中的一个,如tungsten replicator。
p、 在mysql中没有像postgresql中的fdw这样的东西。跨服务器的连接在其他数据库管理系统中很容易实现,但在mysql中却不可能。
6yt4nkrj2#
除了@montypython的出色响应之外,还有第三种方法,尽管有点麻烦,但如果您可能无法使用联邦引擎,并且也无法管理数据库复制,就可以这样做。
使用etl工具来完成这项工作
在那一天,我遇到了一个非常类似的问题:我必须连接来自两个独立数据库服务器的数据,这两个服务器我都没有任何管理权限。我最终建立了pentaho的etl工具套件,从两个数据库中提取数据,转换if(基本上让pentaho对这两个数据集都做了大量工作),并将其加载到我自己的本地数据库引擎中,在那里我得到了我所需的合并和处理的数据。
请注意,这是一个很大的工作(你必须“教”你的etl工具你需要什么,取决于你使用什么工具,它可能涉及相当多的编码),但一旦你完成了,你可以安排工作自动发生在定期,所以你总是有你的本地处理/合并数据随时可访问。
fwiw,我用了pentaho的社区版,就像啤酒一样免费