FEDERATED 存储引擎描述
FEDERATED存储引擎能让你访问远程的MySQL数据库而不使用replication或cluster技术(类似于Oracle的dblink),使用FEDERATED存储引擎的表,本地只存储表的结构信息,数据都存放在远程数据库上,查询时通过建表时指定的连接符去获取远程库的数据返回到本地。
测试在Mysql Federated引擎中访问NodeA数据库 ,需确保Mysql Federated服务器能访问到NodeA服务器3306端口
1、访问NodeA服务器 show engines; 查看FEDERATED是否为YES,如果为YES可忽略第2步
2、修改NodeA服务器mysql.cnf配置文件;vim /etc/my.cnf 在第一行添加federated,重启数据库service mysqld restart
3、在NodeA服务器创建一个数据库新用户,用于远程访问
create user 'fed'@'%' identified by 'fed_test'; --创建一个用户名为fed密码为fed_test的用户,如果提示密码过于简单,执行set global validate_password_policy=0;
set global validate_password_length=1;
grant all on employees.* to 'fed'@'%'; --授予创建的fed用户访问employees数据库所有表的权限
4、 在Mysql Federated服务器中 show engines; 查看FEDERATED是否为YES,如果为YES可忽略第5步
5、修改Mysql Federate服务器mysql.cnf配置文件;vim /etc/my.cnf 在第一行添加federated,重启数据库service mysqld restart;同第2步;
6、Mysql Federate服务器test库访问NodeA服务器test库,也可以用Mysql Federate服务器其他库访问NodeA服务器test库;在Mysql Federate服务器创建一个表用于访问NodeA服务器;表名可以与NodeA服务器中的表名不同。
7、测试在Mysql Federate服务器中AA10访问到NodeA服务器中的AA10表;
CREATE TABLE `aa10` (
`id` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
`aaa100` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '代码',
`aaa101` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '显示名',
`aaa102` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字段名称',
`aaa103` varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述',
PRIMARY KEY (`aaa100`, `aaa102`) USING BTREE
) ENGINE=federated DEFAULT CHARSET=utf8mb4
connection='mysql://fed:fed_test@8.12.25.156:3306/test/aa10';
特别注意 ENGINE=federated ,一定要这样写
connection语法:
scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name
8、在Mysql Fede服务器中访问AA10表,测试内容是否跟NodeA服务器中的AA10表数据是否一致。