MySQL FEDERATED引擎

項目開發中有時會遇到這樣的問題,兩個數據庫的數據須要同步,像ORACLE或者是人大金倉(國產數據庫,Oracle系),能夠經過創建DBLINK連接,來操做數據庫,實現這一業務需求。因爲現階段開發用的MySQL數據庫進行開發,那麼可使用MySQL的Federated引擎實現相似DBLINK的功能。mysql

Federated引擎是基於表級別的,只能將本地數據表定義爲 Federated 引擎並映射至遠程實體表,沒法實現基於庫級別的總體映射。sql

本地數據庫須要啓用Federated 引擎支持,而遠程數據表無須 Federated 引擎支持。 Federated 引擎表使用標準的 MySQL 客戶端協議與遠程數據庫創建 TCP 鏈接。數據庫

首先,查看數據庫的版本:windows

如圖所示,本機MySQL數據庫版爲8.0.15(windows版),mysql默認開啓InnoDB引擎,服務器

接下來查看mysql中有沒有Federated這個引擎:測試

這是有的, 在最後一項, 可是它沒有開啓,接下來開啓它加密

在my.ini中添加federated這一個屬性就可開啓spa

從新啓動mysql服務後,再次執行命令,發現Federated這個引擎已經開啓.net

本次測試分別使用不一樣的服務器進行測試,本地服務器(ip:XX.XX.XX.142) 和遠程服務器(ip:XX.XX.XX.43)3d

遠程服務器建立數據庫文件(XX.XX.XX.43):

CREATE TABLE remote_user (
id VARCHAR ( 255 ) NOT NULL COMMENT 'id',
encryid VARCHAR ( 255 ) DEFAULT NULL COMMENT '加密後的用戶id',
NAME VARCHAR ( 255 ) DEFAULT NULL COMMENT '用戶名',
PASSWORD VARCHAR ( 255 ) DEFAULT NULL COMMENT '密碼',
mobile VARCHAR ( 40 ) DEFAULT NULL COMMENT '手機號碼',
email VARCHAR ( 100 ) DEFAULT NULL COMMENT '郵箱',
credit DOUBLE ( 11, 2 ) DEFAULT '0.00',
adress VARCHAR ( 255 ) DEFAULT NULL,
sex INT ( 2 ) DEFAULT NULL COMMENT '性別(0:男,1:女)',
PRIMARY KEY ( id ) 
) ENGINE = INNODB DEFAULT CHARSET = utf8 COMMENT = '用戶表';

遠程服務器建立數據庫文件(XX.XX.XX.142):

CREATE TABLE local_user (
id VARCHAR ( 255 ) NOT NULL COMMENT 'id',
encryid VARCHAR ( 255 ) DEFAULT NULL COMMENT '加密後的用戶id',
NAME VARCHAR ( 255 ) DEFAULT NULL COMMENT '用戶名',
PASSWORD VARCHAR ( 255 ) DEFAULT NULL COMMENT '密碼',
mobile VARCHAR ( 40 ) DEFAULT NULL COMMENT '手機號碼',
email VARCHAR ( 100 ) DEFAULT NULL COMMENT '郵箱',
sex INT ( 1 ) DEFAULT NULL COMMENT '性別(0:男,1:女)',
credit DOUBLE ( 11, 2 ) DEFAULT '0.00',
PRIMARY KEY ( id ) 
) ENGINE = FEDERATED CONNECTION = 'mysql://root:root@XX.XX.XX.43:3306/rsbxf/remote_user';

 

CONNECTION選項中的鏈接字符串的通常形式以下: scheme://username[:password]@host[:port]/dbname/tablename

 

注意:本地建立的表名必須在遠程服務器存在,建立的字段也必須是遠程表中的字段,能夠比遠程表的字段少,可是不能多,本地存儲引擎選擇:ENGINE =FEDERATED,本地表名與遠程表名,能夠不相同。

開始測試,當local_user表中插入一條數據時,以下:

對應remote_user也會實時自動同步一條數據,以下:

remote_user表中比local_user表中多一個address字段,

一樣我在remote_user表中刪除一條數據對應的local_user表中也會刪除一條數據

 

最後參考連接:https://my.oschina.net/u/3055303/blog/878891?nocache=1572335664902

相關文章
相關標籤/搜索