2012-07-31 55 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