mysql使用federated引擎实现dblink远程表访问

来源:互联网 发布:淘宝助手导入csv失败 编辑:程序博客网 时间:2024/04/28 16:57
1、目标数据库federated引擎安装与启用
查看目标数据库引擎信息:
mysql>  show engines ;

安装federated引擎:
mysql> install plugin federated soname 'ha_federated.so';
如果已经安装,则会提示:ERROR 1125 (HY000): Function 'federated' already exists
否则,会正常安装下去。

启用federated:
[root@Master ~]# mysqld_safe --federated & (简单测试一下)
正式启用:
在mysql配置文件中用添加:【federated】
[root@master ~]# cat /etc/my.cnf [mysqld]datadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.sockuser=mysql# Disabling symbolic-links is recommended to prevent assorted security riskssymbolic-links=0federated[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid[root@master ~]# 

注:federated要添加到[mysqld]的下方,而不能是配置文件的最后。
重启服务:
service mysql[d] restart

2、远程表访问
使用FEDERATED建表语句如下:
CREATE TABLE (......) ENGINE =FEDERATED CONNECTION='MySQL://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'

需要注意的几点:
1.本地的表结构必须与远程的完全一致 
2.远程数据库目前仅限MySQL
3.不支持事务
4.不支持表结构修改



样例:
CREATE TABLE `target_table` (  `room_id` int(11) NOT NULL COMMENT '房间ID',  `uid` bigint(20) NOT NULL COMMENT '用户ID',  `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态(0:订阅,-1删除)',  `created_time` datetime NOT NULL COMMENT '创建时间',  `updated_time` datetime NOT NULL COMMENT '更新时间',  PRIMARY KEY (`room_id`,`uid`),  KEY `Index_roomId_state_updatedTime` (`room_id`,`state`,`updated_time`)) ENGINE=FEDERATED CONNECTION='mysql://jfhadoop:password@121.121.121.121:3306/schema/source_table'COMMENT='房间表';

访问:
select * from target_table;
0 0
原创粉丝点击