-
FEDERATED 引擎
-
使用注意事项
-
通过 FEDERATED 引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中,通过这个引擎可以实现类似Oracle下DBLINK的远程数据访问功能,就是说,这种建表方式只会在数据库A中创建一个表B的表结构文件,表的索引,数据等文件还是在机器B上的数据库B中,相当于只是在数据库A中创建了表B的一个快捷方式
-
FEDERATED 表可能会被复制到其他的slave数据库,你需要确保slave服务器也能够使用定义在connection中或mysql.servers表中的link的用户名/密码 连接上远程服务器
-
远程服务器必须是MySQL数据库
-
在访问FEDERATED表中定义的远程数据库的表前,远程数据库中必须存在这张表
-
FEDERATED 表不支持通常意义的索引,服务器从远程库获取所有的行然后在本地进行过滤,不管是否加了where条件或limit限制
-
查询可能造成性能下降和网络负载,因为查询返回的数据必须存放在内存中,所以容易造成使用系统的swap分区或挂起
-
-
FEDERATED表不支持字段的前缀索引
-
FEDERATED表不支持ALTER TABLE语句或者任何DDL语句
-
FEDERATED表不支持事务
-
本地FEDERATED表无法知道远程库中表结构的改变
-
任何drop语句都只是对本地库的操作,不对远程库有影响
-
-
FEDERATED 默认关闭的,所以需要先开启它
-
登录MySQL
-
-
查看引擎
-
mysql> show engines; 
-
- 首先找到mysql的安装目录。找到启动文件 my.ini
-
show variables like '%data%' 
-
- 快速定位MySQL安装路径
- 打开 my.ini 文件,并在末尾追加 federated
- 重启MySQL
- 查看资源引擎
- 已支持
- 远程MySQL数据表
-
CREATE TABLE `test` ( `id` int DEFAULT NULL, `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `age` int DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 
-
- 本地数据库创建表SQL
- 建表语句格式:
-
CREATE TABLE `table_name`(......) ENGINE =FEDERATED CONNECTION='mysql://[username]:[password]@[location]:[port]/[db-name]/[table-name]'
-
创建表
-
CREATE TABLE `loctest` ( `id` int(11) NOT NULL, `name` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=FEDERATED DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci CONNECTION='mysql://root:root@39.106.128.197:3306/practice/test'; 
-
- 注意
- ENGINE=FEDERATED
- 我们一般建表的时候,数据库引擎是:ENGINE=INNODB, 此时我们要切换为FEDERATED
来源:oschina
链接:https://my.oschina.net/u/4253180/blog/4501645







