因爲業務須要,數據庫服務器須要跨服務器查詢其餘數據庫上的一些表,而FEDERATED能夠知足這個功能。MySQL中針對不一樣的功能需求提供了不一樣的存儲引擎。所謂的存儲引擎也就是MySQL下特定接口的具體實現。
固然,該方式有幾個特色:
1、本地的表結構必須與遠程的徹底同樣。
2、遠程數據庫目前僅限於MySQL
3、不支持事務
4、不支持表結構修改
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上了,和同步有點相似。
到此配置結束。