MySQL使用类似DB Link的远程链接

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在Oracle中创建连接MySQL的数据库连接(db_link),需要执行以下步骤: 1. 在Oracle数据库中安装MySQL的适配器,称为Heterogeneous Services for ODBC(HSODBC)。该适配器可用于建立与其他数据库的连接。 2. 在Oracle的$ORACLE_HOME/hs/admin目录中创建一个init<db_link名称>.ora文件。该文件定义了连接MySQL所需的参数。 以下是一个示例的init<db_link名称>.ora文件内容: ``` HS_FDS_CONNECT_INFO = host=<MySQL服务器IP地址> service=<MySQL服务器端口号> uid=<MySQL用户名> pwd=<MySQL密码> HS_FDS_TRACE_LEVEL = off HS_FDS_FETCH_ROWS = 100 HS_FDS_SHAREABLE_NAME = <ODBC驱动名称> ``` 3. 在Oracle数据库中创建数据库链接使用CREATE DATABASE LINK语句创建一个对象,指定连接MySQL所需的参数。 以下是一个示例的创建数据库链接的语句: ``` CREATE DATABASE LINK <db_link名称> CONNECT TO <MySQL用户名> IDENTIFIED BY <MySQL密码> USING <db_link名称> ``` 4. 配置Oracle数据库的监听器文件,将hsodbc适配器添加到该文件中。 打开$ORACLE_HOME/network/admin目录下的listener.ora文件,在其中添加以下内容: ``` SID_LIST_<SID名称> = (SID_LIST = (SID_DESC = (SID_NAME = <SID名称>) (ORACLE_HOME = <ORACLE_HOME目录>) (PROGRAM = hsodbc) ) ) ``` 确保替换<SID名称>和<ORACLE_HOME目录>为正确的值。 5. 重启Oracle数据库以使更改生效。 完成上述步骤后,您就可以使用创建的数据库链接db_link)来访问MySQL数据库中的数据。例如,您可以使用SELECT语句从远程MySQL表中检索数据: ``` SELECT * FROM <MySQL数据库名称>.<MySQL表名>@<db_link名称> ``` 以上便是使用Oracle创建并使用数据库链接连接MySQL的一般步骤。根据您的具体环境和要求,可能需要进行适当的调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值