mysql添加Federated引擎问题

Posted 夏天一去,又是冬季

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql添加Federated引擎问题相关的知识,希望对你有一定的参考价值。

现在我有这么一个需求, 就是有两个项目, 一个叫项目A,一个项目B, 由于A的用户表和B的用户表是要实现一样的.

例如: 我在A项目中注册了,要实现在B项目中也能登录, 当用到B的时候, 由于B数据库中有视图, 所有不能直接桥连到A

由于用到的数据是mysql, 那么可以使用Federated引擎实现这个需求.

环境

 

首先查询一下mysql中有没有Federated这个引擎.我有的是mysql5.7.22

show engines;

结果

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

这是有的, 在最后一项, 但是它没有开启, 那么接下来就方便多了.

第一步

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

再查询一下

 下面就是在建表语句中加入Federated了.

第二步

	声明引擎		连接属性		  账号	密码		ip			  port 数据库	表
ENGINE =FEDERATED CONNECTION=\'mysql://root:lizhenghua@192.168.137.148:3306/zskdb/cas_user\';

 slave中创建表结构的时候加入上面引擎.

CREATE TABLE `cas_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 (`oid`),
  UNIQUE KEY `upk_user_id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT=\'用户表\' 
ENGINE =FEDERATED CONNECTION=\'mysql://root:zhenghua@192.168.137.148:3306/zskdb/cas_user\';

 从上面可以看出来, 我本身表就已经有啦innodb引擎, 我在后面再添加了一个.

 注意: 只要表结构就行, 数据会自动从master中映射过来的.

 演示:只要master中的cas_user表有操作,在slave中会显示同样的操作, 我在master中删除两条数据, 打开slave的cas_user会发现数据同样少了那被删的两条.

 

以上是关于mysql添加Federated引擎问题的主要内容,如果未能解决你的问题,请参考以下文章

Mysql的跨服务器 关联查询--Federated引擎

MySQL FEDERATED 存储引擎的使用

Linux下MySQL开启Federated引擎方法

MySQL存储引擎--------Federated最佳实战

MySQL开启federated引擎实现数据库表映射

利用MySQL之federated引擎实现DBLink功能