项目开发中有时会遇到这样的问题,两个数据库的数据须要同步,像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