【Mysql】federated引擎远程连接以及一些问题解决!

1.背景

- 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 可以通过FEDERATED存储引擎来实现. 
 - 有点类似Oracle中的数据库链接(DBLINK). 要允许这个存储引擎, 当构建MySQL时使用–with-federated-storage-engine来configure.  
 -  当创建一个FEDERATED表的时候, 服务器在数据库目录创建一个表定义文件. 文件由表的名字开始, 并有一个.frm扩展名. 
 -  无其它文件被创建, 因为实际的数据在一个远程数据库上.

2.相关特性

-     允许本地访问远程 MySQL 数据库中表的数据
 -    本地不存储任何数据文件
 -     仅支持 MySQL 对 MySQL 的访问
 -    不支持异构数据库的访问
 -     MySQL默认不开启Federated存储引擎

3.使用

1. mysql命令行   show engines查看状态是否已经开启;
在这里插入图片1.如图所示 support为YES 为说明已经开启 
2.如果为 ON 说明为未开启,找到my.ini文件,在标签mysqld下添加federated保存重启Mysql即可;

4.my.ini找不到

默认可能生成在C:\ProgramData\MySQL\MySQL Server 5.7。  我的是5.7版本,自己选择对应的目录。

5.federated远程连接地址密码包含特殊符号@…等,连接会出现问题。

同步A库a表到B库,那么在B库创建server连接地址配置(server表-也不是表  我也灭看懂)创建就完了,代码如下:
在这里插入图片描述
图片解析
1.server名字不固定,自定义即可,OPTIONS (USER ‘用户名’, PASSWORD ‘密码’,HOST ‘mysql地址’, PORT 端口号, DATABASE ‘对应A库名字’);
2.创建完server,建表语句,后边跟上FEDERATED CONNECTION=‘server名字/要同步表的名字’;(其中表字段要一致,多一个少一个不知道,自己实验吧。)
3.有些服务器地址可能出现连接问题,如果是在同一个服务器同步数据,可以尝试把连接地址改成localhost;
4.注:此图片使用来自-----叶强的博客,也可以参考其文章【Mysql】federated引擎远程连接带有@符号的数据库名/密码的服务器报错
http://blog.sina.com.cn/u/2543456441

为了方便你们复制和查看,贴一段代码!结合上边第五条,进行带入,应该很容易理解了!

CREATE SERVER zjglink
FOREIGN DATA WRAPPER mysql
OPTIONS (USER '用户名', PASSWORD '密码',HOST 'mysql地址', PORT 端口号, DATABASE '对应A库名字');
CREATE TABLE `title` (
  `id` varchar(32) NOT NULL,
  `name` varchar(45) NOT NULL COMMENT '职称名',
  `rank` int(11) NOT NULL COMMENT '职称级别',
  `pid` varchar(32) NOT NULL COMMENT '父级id',
  `level` int(11) NOT NULL COMMENT '等级',
  PRIMARY KEY (`id`)
) ENGINE=FEDERATED
CONNECTION='zjglink/title';

结合Mysql触发器可以做动态数据同步!!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值