文档章节

MySQL FEDERATED引擎

 明德先生
发布于 2019/10/29 17:15
字数 830
阅读 49
收藏 0

项目开发中有时会遇到这样的问题,两个数据库的数据需要同步,像ORACLE或者是人大金仓(国产数据库,Oracle系),可以通过建立DBLINK链接,来操作数据库,实现这一业务需求。由于现阶段开发用的MySQL数据库进行开发,那么可以使用MySQL的Federated引擎实现类似DBLINK的功能。

Federated引擎是基于表级别的,只能将本地数据表定义为 Federated 引擎并映射至远程实体表,无法实现基于库级别的整体映射。

本地数据库需要启用Federated 引擎支持,而远程数据表无须 Federated 引擎支持。 Federated 引擎表使用标准的 MySQL 客户端协议与远程数据库建立 TCP 连接。

首先,查看数据库的版本:

如图所示,本机MySQL数据库版为8.0.15(windows版),mysql默认开启InnoDB引擎,

接下来查看mysql中有没有Federated这个引擎:

这是有的, 在最后一项, 但是它没有开启,接下来开启它

在my.ini中添加federated这一个属性就可开启

重新启动mysql服务后,再次执行命令,发现Federated这个引擎已经开启

本次测试分别使用不同的服务器进行测试,本地服务器(ip:XX.XX.XX.142) 和远程服务器(ip:XX.XX.XX.43)

远程服务器创建数据库文件(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

© 著作权归作者所有

粉丝 0
博文 19
码字总数 58112
作品 0
大连
私信 提问
加载中

评论(0)

Mysql 开启Federated引擎的方法

MySQL中针对不同的功能需求提供了不同的存储引擎。所谓的存储引擎也就是MySQL下特定接口的具体实现。 FEDERATED是其中一个专门针对远程数据库的实现。一般情况下在本地数据库中建表会在数据库...

jerry__sun
2014/02/27
314
0
MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK.

1 引擎说明 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. 有点类似Oracle中的 数据库链接(DBLINK). 要允许这个存储引擎, 当构建MySQL时使用--with-...

SANSOM
2013/08/21
4.1K
4
MySQL federated引擎 --- 实现类似oracle dblink功能

1.查看是否安装了federated引擎 show engines; 2.开启federated引擎 windows下在my.ini中加入federated,即可开启; linux中,需要编译时加入选项,再在my.ini中加入federated,方可开启. 3.建...

shaohan
2014/03/21
387
0
MySQL的FEDERATED引擎实现类Oracle的DBlink

随着业务的复杂度不断的增加、数据库不断的切分,在分布式系统中往往一台或几台数据库并不能满足我们的需求,所以常常需要多台同时时用,而在平时需要通过其它服务器的数据库获取信息最为方便...

往事_Jim_遗
2017/12/04
0
0
MySQL远程表访问设置

使用MySQL FEDERATED存储引擎,没有对表的本地数据文件(比如,没有.MYD文件)。取而代之地,一个远程数据库存储那些正常地应该在表中的数据。这使得MySQL客户端API来读,删除,更新和插入数...

鉴客
2012/04/26
4.5K
0

没有更多内容

加载失败,请刷新页面

加载更多

在两个日期之间查找对象MongoDB

我一直在围绕在mongodb中存储推文,每个对象看起来像这样: {"_id" : ObjectId("4c02c58de500fe1be1000005"),"contributors" : null,"text" : "Hello world","user" : { "following......

javail
28分钟前
35
0
《aelf经济和治理白皮书》重磅发布:为DAPP提供治理高效、价值驱动的生态环境

2020年2月17日,aelf正式发布《aelf经济和治理白皮书》,这是aelf继项目白皮书后,在aelf网络经济模型和治理模式方面的权威论述。 《aelf经济和治理白皮书》描述了aelf生态中各个角色及利益的...

AELF开发者社区
39分钟前
44
0
EditText的首字母大写

我正在开发一个小小的个人待办事项列表应用程序,到目前为止,一切都运行良好。 我想知道一个小怪癖。 每当我去添加一个新项目时,我都会看到一个带有EditText视图的Dialog。 当我选择EditT...

技术盛宴
43分钟前
30
0
战疫 | 高德工程师如何在3天上线“医护专车”

新冠状病毒肺炎疫情突袭,无数医护人员放弃与家人团聚,明知凶险,仍然奋战在一线。但因为武汉公交、地铁、网约车停运,医护人员上下班很难。白衣天使疾呼打车难。 (截图摘自《财经国家周刊...

amap_tech
51分钟前
41
0
img在IE中无法按比例显示

在IE浏览器中使用img标签当给img标签设置width:98%时,显示时还是会把img的原始高度显示出来 解决方式给父标签设置width,但width不能使用100%需要指定一个值 <div style="width:900px;"> ...

有理想的鸭子
51分钟前
45
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部