MySQL federated 引擎跨服務器使用實例

 因爲業務須要,數據庫服務器須要跨服務器查詢其餘數據庫上的一些表,而FEDERATED能夠知足這個功能。MySQL中針對不一樣的功能需求提供了不一樣的存儲引擎。所謂的存儲引擎也就是MySQL下特定接口的具體實現。 FEDERATED是其中一個專門針對遠程數據庫的實現。通常狀況下在本地數據庫中建表會在數據庫目錄中生成相應的表定義文件,並同時生成相應的數據文件。但通FEDERATED引擎建立的表只是在本地有表定義文件,數據文件則存在於遠程數據庫中(這一點很重要) mysql

固然,該方式有幾個特色: sql

  1、本地的表結構必須與遠程的徹底同樣。 數據庫

  2、遠程數據庫目前僅限於MySQL vim

  3、不支持事務 服務器

  4、不支持表結構修改 ide

 1、查看數據庫支持的引擎: 測試

數據庫版本:spa

因爲開始編譯的mysql不支持FEDERATED引擎。blog

 

接下來須要添加FEDERATED 接口

查看mysql安裝目錄下的擴展中是否有ha_federated.so文件,以下圖所示:

我這上面是有的,接下來進入mysql,安裝擴展。

mysql> install plugin federated soname 'ha_federated.so';

 

能夠看到如今已經顯示了FEDERATED引擎,接下來就是啓用一下了。

# vim /etc/my.cnf 

[mysqld] 段裏添加federated便可,重啓mysql服務便可。

進入mysql,使用SHOW ENGINES;查看便可。

如今能夠看出,已經支持了FEDERATED引擎。

接下來建立測試數據庫和表,並插入數據:

 

我在其餘數據庫(192.168.158.217)上建立測試數據庫和表

mysql> CREATE DATABASE testdb;

mysql> CREATE TABLE testdb(ID int,NAME VARCHAR(20));

mysql> INSERT INTO testdb VALUE (1,'luowei1');

mysql> INSERT INTO testdb VALUE (2,'luowei2');

mysql> INSERT INTO testdb VALUE (3,'luowei3');

 

我測試數據庫是192.168.158.218,接下來開始測試了。

mysql>  CREATE DATABASE testdb_218;

mysql> use testdb_218;

mysql> CREATE TABLE testdb(ID int,NAME VARCHAR(20)) ENGINE=federated connection='mysql://baison:baison@192.168.158.217:3306/testdb/testdb'DEFAULT CHARSET=utf8;

如今查看新建表的數據: 

能夠看到剛創建的表中添加的數據,在這裏已經顯示了。

接下來再在217上插入一條記錄:

mysql> INSERT INTO testdb VALUE (4,'luowei4');

而後在218上查看一下:

能夠看出217上的更新已經更新到了218上了,和同步有點相似。

到此配置結束。

相關文章
相關標籤/搜索