MYSQL FEDERATED存储引擎

FEDERATED将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用。FEDERATED是其中一个专门针对远程数据库的实现。一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件。通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中(这一点很重要)

默认情况下面,mysql是不启用该存储引擎的,如下

mysql> show engines;

从上面可以看到FEDERATED的Support是NO,说明没有启用,如果没有的话说明没有编译进去,需要重新安装,要像启用的话使Support为YES,可以在/etc/my.cnf加federated(在mysqld加),然后重启就可以启用

注意:本地创建的表必须在远程服务器存在,创建的字段也必须是远程表中的字段,可以比远程表的字段少,但是不能多,本地存储引擎选择:ENGINE =FEDERATED,

CONNECTION选项中的连接字符串的一般形式如下:scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name

还有一些连接字符串的例子:

CONNECTION='mysql://username:password@hostname:port/database/tablename'
CONNECTION='mysql://username@hostname/database/tablename'
CONNECTION='mysql://username:password@hostname/database/tablename'

 1、在本地数据库上做如下操作

CREATE TABLE `federated_game_broker`(
    `ID` int(11) NOT NULL AUTO_INCREMENT,
    `brokerid` varchar(10) NOT NULL COMMENT '券商id',
    `broker_name` varchar(20) NOT NULL COMMENT '名称',
    `father_id` int(11) NOT NULL COMMENT '父ID',
    `path` varchar(20) NOT NULL COMMENT 'id路径',
    `remark` varchar(100) COMMENT '备注',
    PRIMARY KEY (`ID`)
)
ENGINE=FEDERATED CHARSET=utf8 CONNECTION='mysql://dasai_fed:dasai_fed@172.31.1.98:3306/test/imc_game_broker';

2、在远程表上做操作

CREATE TABLE `imc_game_broker` (
    `ID` int(11) NOT NULL AUTO_INCREMENT,
    `brokerid` varchar(10) NOT NULL COMMENT '券商id',
    `broker_name` varchar(20) NOT NULL COMMENT '名称',
    `father_id` int(11) NOT NULL COMMENT '父ID',
    `path` varchar(20) NOT NULL COMMENT 'id路径',
    `remark` varchar(100) COMMENT '备注',
    PRIMARY KEY (`ID`)
) EENGINE=InnoDB DEFAULT CHARSET=utf8;

 3、在远程表所在的mysql数据库上添加一个账号

grant select on test.imc_game_broker to dasai_fed@'172.31.1.106' identified by 'daisai_fed';

 4.操作2中的表数据,创建完成之后,你会神奇的发现你当前创建的这个表中已经有远程表里面的所有数据了

注意:

  • 对本地进行更新操作,本地和远程的数据都被更改了。
  • federated存储引擎不支持alter table 操作。
  • 删除本地表对远程表无影响
  • federated存在安全隐患,采用connection string连接配置都是明文
  • federated查询映射表耗时是远程连接访问耗时的5-500倍!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值