MySQL使用类似DB Link的远程链接
前言:
在实际工作中,我们可能会遇到需要操作其他数据库实例的部分表,但又不想系统连接多库。此时我们就需要用到数据表映射。如同Oracle中的DBlink一般,使用过Oracle DBlink数据库链接的人都知道可以跨实例来进行数据查询,同样的,Mysql自带的FEDERATED引擎完美的帮我们解决了该问题。本篇文章介绍FEDERATED引擎的开启和使用。
注意:如果不是root用户,FEDERATED引擎的开启和使用需要给用户授权super的角色权限。
1.开启FEDERATED引擎
若需要创建FEDERATED引擎表,则目标端实例要开启FEDERATED引擎。从MySQL5.5开始FEDERATED引擎默认安装 只是没有启用,进入命令行输入show engines; FEDERATED行状态为NO。
mysql> show engines;
在配置文件my.cnf中[mysqld]下面加入一行:federated,然后重启数据库,FEDERATED引擎就开启了。
2.使用CONNECTION创建FEDERATED表
使用CONNECTION创建FEDERATED引擎表通用模型:
CREATE TABLE (…表结构字段定义,和远程表结构字段保持一致)
ENGINE =FEDERATED CONNECTION=‘mysql://username:password@hostname:port/database/tablename’
例如:
注意:注意ENGINE=FEDERATED CONNECTION后为源端地址 避免使用带@的密码,否则会因为特殊符号导致地址解析识别出错。
如果密码确实带有@这种特殊符号怎么办呢,就要使用接下来的另外一种方式了:先创建远程列举别名(CREATE SERVER)再创建远程FEDERATED表。
3.使用CREATE SERVER创建FEDERATED表
如果要在同一服务器上创建多个FEDERATED表,或者想简化创建FEDERATED表的过程,则可以使用该CREATE SERVER语句定义服务器连接参数,这样多个表可以使用同一个server。
CREATE SERVER创建的格式是:
CREATE SERVER fedlink(远程服务器别名)
FOREIGN DATA WRAPPER mysql
OPTIONS (USER ‘fed_user(用户名)’, PASSWORD ‘123456(密码)’, HOST ‘remote_host(远程数据库地址)’, PORT 3306()端口, DATABASE ‘federated(数据库名)’);
之后创建FEDERATED表可采用如下格式:
CREATE TABLE (…)
ENGINE =FEDERATED CONNECTION=‘test_link/tablename’
例如:
创建test_link
mysql> CREATE SERVER test_link
-> FOREIGN DATA WRAPPER mysql
-> OPTIONS (USER ‘root’, PASSWORD ‘root’,HOST ‘192.168.1.12’,PORT 3306,DATABASE ‘test123’);
Query OK, 1 row affected (0.00 sec)
# 目标端创建FEDERATED表
mysql> CREATE TABLE test1
(
-> increment_id
int(11) NOT NULL AUTO_INCREMENT COMMENT ‘自增主键’,
-> stu_id
int(11) NOT NULL COMMENT ‘学号’,
-> stu_name
varchar(20) DEFAULT NULL COMMENT ‘学生姓名’,
-> create_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT ‘创建时间’,
-> update_time
timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘修改时间’,
-> PRIMARY KEY (increment_id
),
-> UNIQUE KEY uk_stu_id
(stu_id
)
-> ) ENGINE=FEDERATED DEFAULT CHARSET=utf8 COMMENT=‘学生表’ CONNECTION=‘test_link/test1’;
Query OK, 0 rows affected (0.01 sec)
最后:大功告成!
转载自:
https://www.cnblogs.com/kunjian/p/11131592.html