您的位置:首页 > Web前端

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

2016-10-17 15:14 429 查看
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/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
federated

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: