MySQL遠端資料表訪問設定

來源:互聯網
上載者:User

標籤:語言   myisam   遠程   href   data   connect   api   char   hand   

 MySQL遠端資料表訪問設定 本博文轉載自          http://blog.itpub.net/9406448/viewspace-223946

    ---- 官網上的資訊

使用MySQL FEDERATED儲存引擎,沒有對錶的本機資料檔案(比如,沒有.MYD檔案)。取而代之地,一個遠端資料庫儲存那些正常地應該在表中的資料。這使得MySQL用戶端API來讀,刪除,更新和插入資料的使用成為必要。資料取回被通過SELECT * FROM tbl_name SQL語句來初始化。要讀這個結果,通過使用mysql_fetch_row() C API函數,行被一次取一個,然後從SELECT結果包中的列轉換成FEDERATED處理器期望的格式。

基本流程如下:

1.    SQL調用被本地發布

2.    MySQL處理器API (資料以處理器格式)

3.    MySQL用戶端API (資料被轉換成SQL調用)

4.    遠端資料庫-> MySQL用戶端API

5.    轉換結果包(如果有的話)到處理器格式

6.    處理器 API -> 結果行或受行影響的對本地的計數  

        使用FEDERATED表的步驟是非常簡單的。通常,你運行兩個伺服器,要麼在同一個主機上,要麼在不同主機上。(一個FEDERATED表使用其它被同一伺服器管理的表也是可能的。雖然只有極少的點要這麼做)。

首先,你必須在你想要用FEDERATED表訪問的遠程伺服器上有一個表。假設,遠端表在FEDERATED資料庫中並且被如下定義:

CREATE TABLE test_table (
    id     int(20) NOT NULL auto_increment,
    name   varchar(32) NOT NULL default ‘‘,
    other  int(20) NOT NULL default ‘0‘,
    PRIMARY KEY  (id),
    KEY name (name),
    KEY other_key (other)
)
ENGINE=MyISAM
DEFAULT CHARSET=latin1;

ENGINE表選項可能命名任何儲存引擎,該表需要不是一個MyISAM表。

接著,在本機伺服器上為訪問遠端資料表建立一個FEDERATED表:

CREATE TABLE federated_table (
    id     int(20) NOT NULL auto_increment,
    name   varchar(32) NOT NULL default ‘‘,
    other  int(20) NOT NULL default ‘0‘,
    PRIMARY KEY  (id),
    KEY name (name),
    KEY other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION=‘mysql://[email protected]_host:9306/federated/test_table‘;

注意: CONNECTION 替代 用在先前版本的MySQL裡的COMMENT)。

除了ENGINE表選項應該是FEDERATED,並且CONNECTION表選項是給FEDERATED指明如何串連到遠程伺服器上的連接字串之外,這個表的結構必須完全與遠端資料表的結構相同。

FEDERATED引擎僅建立在已聯盟資料庫中的test_table.frm檔案。

遠程主機資訊指明本機伺服器要串連到的遠程伺服器,資料庫和表資訊指明哪一個遠端資料表要被作為資料檔案來用。在這個例子中。遠程伺服器被指定來作為遠程主機在9306連接埠上運行,所以你要啟動伺服器,讓它監聽9306連接埠。

在CONNECTION選項中的連接字串的一般形式如下:

scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name

只有mysql在這一點被支援為scheme,密碼和連接埠號碼時可選的。

這裡有一些連接字串的例子:

CONNECTION=‘mysql://username:[email protected]:port/database/tablename‘
CONNECTION=‘mysql://[email protected]/database/tablename‘
CONNECTION=‘mysql://username:[email protected]/database/tablename‘

為指定連接字串使用CONNECTION是非可選,並且在將來可能會改變。當你使用FEDERATED表的時候,要記得這個,因為這意味著當將來發生那種改變之時,可能被要求。

因為任何被用的密碼作為純文字被存在連接字串中,它可以被任何使對FEDERATED表使用SHOW CREATE TABLE或SHOW TABLE STATUS的使用者,或者在INFORMATION_SCHEMA資料庫中查詢TABLES表的使用者看見。

FEDERATED支援及不支援的如下:

·         在第一個版本中,遠程伺服器必須是一個MySQL伺服器。FEDERATED對其它資料庫引擎的支援可能會在將來被添加。

·         FEDERATED表指向的遠端資料表在你通過FEDERATED表訪問它之前必須存在。

·         一個FEDERATED表指向另一個FEDERATED表是可能的,但是你必須小心不要建立一個迴圈。

·         沒有對事務的支援。

·         如果遠端資料表已經改變,對FEDERATED引擎而言是沒有辦法知道的。這個的原因是因為這個表必須象資料檔案一樣工作,除了資料庫其它任何都不會被寫入。如果有任何對遠端資料庫的改變,本地表中資料的完整性可能會被破壞。

·         FEDERATED儲存引擎支援SELECT, INSERT, UPDATE, DELETE和索引。它不支援ALTER TABLE, DROP TABLE或任何其它的資料定義語言 (Data Definition Language)語句。當前的實現不使用預先準備好的語句。

·         執行使用SELECT, INSERT, UPDATE和DELETE,但不用HANDLER。

·         FEDERATED表不能對查詢快取不起作用。

這些限制中的一些在FEDERATED處理機的將來版本可能被消除

MySQL遠端資料表訪問設定

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.