联合 - 启用麻烦

时间:2012-07-31 14:15:20

标签: mysql federated

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

我们没有启用联盟。重新安装服务器A会造成很多麻烦,我相信,我们无法在不重置的情况下启用联盟。我也相信在B服务器上启用它是不够的(如果我错了,请纠正我)

我们还有其他解决方案吗? mysql服务器默认启用了什么?有什么想法吗?

3 个答案:

答案 0 :(得分:1)

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

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

  • 请记住在您正在创建的联合表上设置KEY。 (或者它会迟钝。)
  • 请记住在视图中使用ALGORITHM = MERGE
  • 请记住在服务器A
  • 上授予对USERNAME(来自连接字符串)的访问权限

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

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上的视图:

CREATE
    ALGORITHM = MERGE
    DEFINER = `ANOTHERUSERNAME`@`%`
    SQL SECURITY DEFINER
VIEW `baseSchema`.`baseTable` AS
    SELECT
        ... AS `keyName`,
        ... AS `key2Name`
    FROM
        ...

答案 1 :(得分:1)

在任何情况下,您都无法写入FEDERATED表格期间!您必须与运行已创建FEDERATED表连接的数据库的服务器建立直接数据库连接。

如果你现在可以写信给FEDERATED表,我会很生气。它从未允许它多年。如果这是真的,它还会使我写完10年的代码完全浪费我的时间。

在为100个网站制作集中用户数据库的实例中使用非常方便!即一个社交网络,这是我用它... ...

我已经使用过它,因为在任何人都知道引擎存在之前。当我开始使用它时,它没有文档,我不得不尝试甚至弄清楚它可以用于什么。几年来,发动机始终存在并且很少或根本没有文档。

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

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

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

本地连接到音乐中心和网络集线器,所有UPDATE和INSERT都有单独的连接器,其他所有JOIN等只使用本地数据库连接器!

我希望这可以帮助你更好地理解它:)

我使用的是MySQL 5.6和PHP 5.

你要问自己差不多五年了,为什么很少或没有关于它用于什么的文件?大多数人甚至不知道它存在......

主要用于将查询结果导入本地数据库!即使具有完全写入权限,您也永远无法写入FEDERATED表!出于安全原因这是不允许的,如你所说的那样非常慢。

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

启用FEDERATED大约需要30秒,重启服务器大约需要30秒。在您使用VPS的情况下,可能不允许您启用FEDERATED。

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

顺便说一下,FEDERATED不再缓慢......从来没有像我刚刚解释的那样使用......

即使我可以写信给FEDERATED表,我也不会这样做。您通过向本地网站添加联合表来联合两台服务器。

根据远离MySQL服务器的HOPS数量,这将减慢速度。还要确保将您的IP添加到其cPanel下的远程服务器。

如果网站全部位于同一台服务器上,并且只是单独的用户帐户和具有单独IP的网站,那么应该是零滞后。

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

答案 2 :(得分:0)

更新:如果升级到mariaDB,则必须将federatedX作为插件加载。旧的联合项目将继续存在,但新的眼睛和新鲜的灵魂正在努力。 Oracle不再参与其中......现在称为federatedX