首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >联合启用故障

联合启用故障
EN

Stack Overflow用户
提问于 2012-07-31 22:15:20
回答 3查看 1.4K关注 0票数 2

假设我们有MySQL服务器A,我们需要在其中创建表的“副本”,它位于服务器B上。

我们没有启用联合。重置服务器A会带来很多麻烦,我相信,不重置就不能启用联合。我还认为在B服务器上启用它是不够的(如果我做错了什么,请纠正我)

我们还有其他的解决方案吗?mysql server中有默认启用的功能吗?有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-11 19:34:39

  • You仅在服务器上需要启用联邦B
  • You可以通过在B上创建联邦表来访问A上的视图
  • 您可以在联邦表上执行INSERT、UPDATE、DELETE
  • 如果需要只读访问权限,您可以限制用户权限

,但是!你不能做任何聚合函数。在将联合的视图上(例如,COUNT()、MAX()、UNION...)(您可以,但它会滞后)

  • 记住在您正在创建的联邦表上设置键。(否则它将滞后于horr.)
  • Remember在视图上使用ALGORITHM=MERGE
  • 记住授予对服务器A

上的用户名(从连接字符串)的访问权限

服务器B上的联邦表示例:

代码语言:javascript
复制
delimiter $$
CREATE TABLE `schemaName`.`tableName`(
    `keyName` VARCHAR(10) NOT NULL,
    `key2Name` DATE DEFAULT '2012-01-01',
    KEY `keyName` (`keyName`) 
)
ENGINE=FEDERATED
DEFAULT CHARSET=utf8
CONNECTION='mysql://USERNAME:PASSWORD@IPADDRESS:PORTNUMBER/baseSchema/baseTable'
$$

和服务器A上的视图:

代码语言:javascript
复制
CREATE
    ALGORITHM = MERGE
    DEFINER = `ANOTHERUSERNAME`@`%`
    SQL SECURITY DEFINER
VIEW `baseSchema`.`baseTable` AS
    SELECT
        ... AS `keyName`,
        ... AS `key2Name`
    FROM
        ...
票数 2
EN

Stack Overflow用户

发布于 2017-09-03 18:18:01

在任何情况下,您都不能写入联邦表期间!您必须与运行已创建联邦表连接的数据库的服务器建立直接DB连接。

如果你现在可以写联邦表,我会很生气的。多年来,它从未允许这样做。如果这是真的,这也会让我写了10年的代码完全浪费了我的时间。

在为100个网站创建一个集中用户数据库的实例中使用它是相当方便的!也就是我用来做什么的社交网络...

在别人知道引擎存在之前,我就一直在用它。当我开始使用它的时候,它就在那里,没有文档,我必须进行实验,才能弄清楚它可以用来做什么。引擎一直在那里,多年来几乎没有文档。

我使用或拥有的唯一联邦DB表共享网络用户信息。当有人注册成为新用户时,我所有的外部网站仍然需要建立到主服务器的数据库连接。

您需要两个数据库连接器才能正确使用FEDERATED!一个用于UPDATE和INSERT等,另一个DB用于所有本地查询和连接等。

我的网络使用两个外部数据库,每个网站一个本地数据库。我使用三个数据库连接器。

本地连接到音乐集线器和网络集线器,所有更新和插入以及其他所有连接都使用单独的连接器,只需使用本地DB连接器!

我希望这能帮助您更好地理解它:)

我使用的是PHP5.6和MySQL 5。

近五年来,你不得不问自己,为什么关于它的用途的文档很少或根本没有?大多数人甚至不知道它的存在。

它主要用于将查询结果导入到本地数据库中!即使拥有完全的写访问权限,您也永远不能写入联邦表!出于安全原因,它是不被允许的,而且正如您所说的那样,它将非常非常慢。

如果我错了,你可以纠正我,但请知道,在他们告诉任何人它存在之前,我就已经在使用FEDERATED了。

启用FEDERATED大约需要30秒,重新启动服务器大约需要30秒。在使用VPS的实例中,可能不允许启用联合。

编辑my.cnf文件并重新启动服务器...

顺便说一句,联邦不再慢了。当我以我刚才解释的方式使用时,从来没有...

即使我可以写一个联合表,我也不会这么做。您通过向本地网站添加一个联合表来联合两个服务器。

这将根据您与远程MySQL服务器之间的跳数而减慢。还要确保将您的IP添加到他们的cPanel下的远程服务器。

如果所有网站都驻留在同一服务器上,并且只是单独的用户帐户和具有单独IP的网站,则应该是零延迟。

20世纪80年代中期,McLeod和Heimbigner是最先定义联邦数据库系统的人之一。

票数 2
EN

Stack Overflow用户

发布于 2017-10-18 07:12:31

更新:如果你升级到mariaDB,你将不得不以插件的形式加载federatedX。旧的联邦项目将继续存在,但会有新的视角和新鲜的灵魂在它上面工作。先知不再插手这件事...它现在被称为federatedX

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11742193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档