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會發現數據同樣少了那被刪的兩條.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM