2012-07-31 59 views
1

比方说我们有MySQL服务器A,我们需要创建一个表中的“复制”,这是位于服务器B上的联合 - 启用麻烦

我们没有启用联合。重置服务器A会导致很多麻烦,我相信,如果不重新设置,我们将无法启用联合服务。我也相信在B服务器上启用它是不够的(纠正我,如果我在任何地方都是错误的)

我们还有其他什么解决方案?有没有启用默认情况下在MySQL服务器?有任何想法吗?

+0

您是否试图将表及其内容复制到服务器B或者您是否试图访问服务器A上的数据,使用服务器B? – 2012-07-31 14:18:19

+0

访问。但我有许多查询需要将它与A服务器中的表连接起来。 – 2012-08-02 07:45:12

回答

1
  • 您必须启用只是在服务器B联合
  • 您可以通过一个联合表格第B
  • 你可以做INSERT,UPDATE,在联合表格
  • 如果你删除一个访问视图需要只读访问权限,您可以限制用户权限

但是!你不能做任何聚合函数。 (可以,但是它会滞后)

  • 请记住在您要创建的联合表上设置KEY 。 (或者它会滞后horr。)
  • 记住使用算法=合并的看法
  • 记住授予对服务器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:[email protected]:PORTNUMBER/baseSchema/baseTable' 
$$ 

而且在服务器A上的观点:不能写入FEDE

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

**警告**截至今日** 2012-09-18 ** MySql在制作一个已加入视图的联合表时存在一个错误。不返回错误,但会忽略连接。 – drzymala 2012-09-18 18:12:03

1

在任何情况下都是额定的桌面时间!您必须直接与运行已创建FEDERATED表连接的数据库的服务器进行数据库连接。

如果您现在可以写入FEDERATED表,我会很生气。它从未许多年。如果这是真的,那么也会让我写完10年的代码完全浪费我的时间。

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

我已经使用它,因为在任何人知道引擎存在之前。当我开始使用它时,它在那里没有文档,我不得不试验甚至弄清楚它可以用于什么。发动机总是在那里,很多年都没有文件。

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

您需要两个数据库连接器以正确的方式使用FEDERATED!一个用于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是最早在80年代中期定义联邦数据库系统的人之一。

0

更新:如果升级到mariaDB,则必须将federatedX作为插件加载。旧的联邦项目将继续生存下去,但新的眼睛和新鲜灵魂正在努力工作。甲骨文不再有手...它现在被称为federatedX

+0

您可以编辑您的原始答案以添加更新,无需发布其他答案。 – lukess 2017-10-17 23:45:23

+0

许多人仍在使用联邦和非联邦X。我上面所说的不适用于federatedX – 2017-10-18 01:04:41

+0

如果您阅读MariaDB所说的帖子,您必须使用插件,并且在上面的帖子中,它是使用标准引擎编译的,只需要在my.cnf中启用。此次更新旨在让人们知道旧的联合方式和引擎已经消失,不再生产。 Oracle不再处理它。它被丢弃了,新的人们正在使用旧代码开发一个新项目,并且必须通过外部插件加载。它不能以相同的方式加载。截至目前在MariaDB 10.02它是外部加载,没有编辑my.cnf文件。 – 2017-10-18 01:17:08