dblink(Database Link)数据库链接顾名思义就是数据库的链接,就像电话线一样,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。

当整合两个位于不同服务器上数据库的内容,就遇到了远程访问数据库的问题。在oracle中可以通过dblink来实现跨本地数据库来访问另外一个数据库中的数据。MySQL中的federated插件来实现类似的功能。

实现功能:

可以在Linux系统中MySQL数据库(target端)中建立宿主机MySQL数据库(source端)中某个表的link,当在Linux中读取link表时,就相当于直接读取宿主机中的原始表内容。

实现步骤:

1. 查看target端(Linux虚拟机中)是否安装了federated插件:

mysql> show engines;

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |

| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |

| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |

| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |

| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |

| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |

| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |

| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |

| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

显示没有安装federated插件

2. 安装federated插件:

mysql>install plugin federated soname 'ha_federated.so';

ERROR 1125 (HY000): Function 'federated' already exists

说明已经安装过了,但没有启用

[root@localhost etc]# service mysql stop

[root@localhost etc]# mysqld_safe --federated &

[root@localhost etc]# 140811 01:20:21 mysqld_safe Logging to '/var/lib/mysql/localhost.localdomain.err'.

140811 01:20:22 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql

mysql> show engines;

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |

| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |

| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |

| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |

| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |

| FEDERATED          |YES     | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |

| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |

| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |

| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

federated插件已经启用

3. 配置/etc/my.conf,设置federated为默认启动

[root@localhost etc]# vi /etc/my.conf

在文件中加入一行:

federated

重启mysql服务

service mysql restart

mysql> show engines;

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |

| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |

| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |

| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |

| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |

| FEDERATED          | YES      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |

| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |

| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |

| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |

+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+

已经设置为默认启动了。

4. 在source端建立测试表,我是通过Navicat建立表的,其sql文件为:

DROP TABLE IF EXISTS `e_eledata`;

CREATE TABLE `e_eledata` (

`ID` bigint(20) unsigned NOT NULL auto_increment COMMENT 'ID',

`E_ELEMETERHEAD_ID` bigint(20) default NULL COMMENT '电表表头ID',

`DAQDT` timestamp NULL default NULL COMMENT '数据采集时间',

`DLDT` timestamp NULL default NULL COMMENT '数据入库时间',

`APCURRENT` decimal(10,3) default NULL COMMENT 'A相电流。单位:A。',

`BPCURRENT` decimal(10,3) default NULL COMMENT 'B相电流。单位:A。',

`CPCURRENT` decimal(10,3) default NULL COMMENT 'C相电流。单位:A。',

`APVOLTAGE` decimal(10,3) default NULL COMMENT 'A相电压。单位:V。',

`BPVOLTAGE` decimal(10,3) default NULL COMMENT 'B相电压。单位:V。',

`CPVOLTAGE` decimal(10,3) default NULL COMMENT 'C相电压。单位:V。',

PRIMARY KEY  (`ID`)

) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='电路数据表';

5. 在target端建立link表,可以直接改写source表的sql脚本文件为:

DROP TABLE IF EXISTS `e_eledata_link`;

CREATE TABLE `e_eledata_link` (

`ID` bigint(20) unsigned NOT NULL auto_increment COMMENT 'ID',

`E_ELEMETERHEAD_ID` bigint(20) default NULL COMMENT '电表表头ID',

`DAQDT` timestamp NULL default NULL COMMENT '数据采集时间',

`DLDT` timestamp NULL default NULL COMMENT '数据入库时间',

`APCURRENT` decimal(10,3) default NULL COMMENT 'A相电流。单位:A。',

`BPCURRENT` decimal(10,3) default NULL COMMENT 'B相电流。单位:A。',

`CPCURRENT` decimal(10,3) default NULL COMMENT 'C相电流。单位:A。',

`APVOLTAGE` decimal(10,3) default NULL COMMENT 'A相电压。单位:V。',

`BPVOLTAGE` decimal(10,3) default NULL COMMENT 'B相电压。单位:V。',

`CPVOLTAGE` decimal(10,3) default NULL COMMENT 'C相电压。单位:V。',

PRIMARY KEY  (`ID`)

) ENGINE=FEDERATED AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='电路数据表'

CONNECTION='mysql://usrname:password@192.168.1.98:3306/databasename/table  //宿主机的数据库

其中:

usrname为宿主机中MySQL的用户名

password为相应的密码

(要保证该用户具有远程登陆的权限,可以通过以下命令来设置:

mysql>GRANT ALL PRIVILEGES ON *.* TO 'usrname'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

其中*.*是指对用户开放所有数据库和表的权限,如果只开放某一个数据库的一个表为databasename.table;'%'指的是该用户可以从任意的一个ip地址来远程访问数据库,包括本地,如果要限制用户从特定的ip来访问,将其改为'ip地址')

192.168.1.98是source数据库的ip,这里为我宿主机的ip

3306为数据库的端口,默认一般为3306

database 和table分别为source端数据库的名称和表名称

将该sql脚本在target端运行

6. 实现跨本地数据库的访问

在target端通过访问e_eledata_link表来访问source端e_eledata表

mysql> select *from e_eledata_link;

dblink连接远程mysql_MySQL中使用federated 实现dblink 远程表访问相关推荐

  1. 两表连接查询 mysql_MySQL 中两表连接查询总结

    在之前的学习中,筛选出来的列都是一张表中的,本篇开始是对连表查询的学习内容.先从以下场景开始: 生成一张报价单,报价单包含商品名称,栏目名称,商品库存,商品价格,栏目名称和商品信息放在两张表中. 传统 ...

  2. mysql federated引擎_MySQL 远程连接(federated存储引擎)

    概述 本文主要介绍通过federated存储引擎建立远程连接表 测试环境:mysql 5.6.21 步骤 开启federated存储引擎 先查看federated存储引擎存储引擎是否启用 SHOW E ...

  3. maven 打包部署时访问远程仓库中没有的jar

    maven 打包部署时访问远程仓库中没有的jar maven构建项目 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文 ...

  4. Oracle数据库的dblink连接

    Oracle数据库的dblink连接 最近在做Oracle数据库的dblink连接,在简单学习之后就直接使用命令创建了连接 create database link tieqian connect t ...

  5. MySQL开启federated引擎实现数据库表映射

    1.查看federated引擎是否开启 点击进入Navicat并点击键盘上F6,出现命令行界面 ,输入指令:show engines; 2.开启federated引擎 Windows系统 : 在my. ...

  6. pycharm远程调试python_使用PyCharm进行Python远程调试

    背景描述 在机房中,服务器通过ADB与多台Android设备相连接,并通过Python应用程序(QMSInterceptor)对Android设备进行任务调度. 在开发环境中对QMSIntercept ...

  7. 详细故障排除步骤:针对 Azure 中到 Windows VM 的远程桌面连接问题

    本文提供详细的故障排除步骤,用于为基于 Windows 的 Azure 虚拟机诊断和修复复杂的远程桌面错误. Important 若要消除更常见的远程桌面错误,请务必先阅读远程桌面的基本故障排除文章, ...

  8. Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法

    Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法 1).容器中登录my ...

  9. 使用DBLink方式同步远程数据库中含Blob、Clob字段表的问题解决

    在数据库同步中我们经常会用到DBLink方式.DBLink可以将物理上存放于网络的多个数据库在逻辑上当成一个单一的大数据库.开发人员无需关心数据库的网络分布,就能很方便的实现从不同数据库之间读取数据. ...

  10. 连接远程电脑中的虚拟机---端口映射

    连接远程电脑中的虚拟机---端口映射 问题:A主机中运行有2台虚拟机,现在我们希望在B主机中通过ssh(或其他方式)访问A主机中的2台虚拟机.(前提:B主机可以ping通A主机,即A有公网IP或A.B ...

最新文章

  1. eclipse集成lombok
  2. js原生方法传参的细节(面试必问)
  3. html实战例子: 在title左侧添加logo
  4. 单页面应用SPA的优缺点
  5. Hadoop权威指南 _04_第I部分Hadoop基础知识_第2章关于MapReduce
  6. C4C Cloud Application Studio做ABSL开发的一些性能方面的最佳实践
  7. 在多线程中使用spring的bean
  8. 64位Ubuntu提示(...adb": error=2, 没有那个文件或目录)
  9. 数据中台VS业务中台、数据中台VS数据仓库,到底有什么区别?
  10. 记一次SVN误删除操作和Tomcat版本与操作系统不兼容 问题分析及解决的过程
  11. json、pickle
  12. tuning 02 Diagnostic and Tuning Tools
  13. kubernetes视频教程笔记 (25)-集群调度-调度过程说明
  14. 欧盟《一般数据保护法案》(GDPR)核心要点 本文更多的是站在企业角度来思考法案对物联网行业的影响以及应对措施,一来希望与同行企业可以就GDPR进行更多的互动讨论;二来也是希望传播国际法案对于安全和
  15. 2010版gmp 计算机系统,2010版GMP附录:计算机化系统 整体及条款解读
  16. TDSQL破圈背后:国产数据库加速出击
  17. 选择使用Yarn来做Docker的调度引擎
  18. 全球及中国3,4-二氯异噻唑-5-羧酸行业研究及十四五规划分析报告
  19. 实现条码枪的无焦点扫码
  20. 基础知识----Symbian UIQ

热门文章

  1. 自己攒的正则表达式---判断汉字、字符但不要数字
  2. unity C#修改脚本图标
  3. unity 如何快速展开Hierarchy所有层次
  4. Atitit 面试技术点最小化问题法总结 目录 1. Web 前端 1 1.1. Jq 常用操作哪些?? 1 1.2. 查询后如何绑定后端数据到表格 2 1.3. 提交后怎么接受表单数据 2 2.
  5. Atitit webdav的使用与配置总结attilax总结 目录 1. 支持的协议 2 1.1. http File unc 2 2. 应用场景 2 2.1. 远程文件管理实现功能 文件建立
  6. Atitit tomcat 启动报错 ZipException: archive is not a ZIP archive. 1.1. ----Should sh lib jar err... 1
  7. Atitit 在线支付系统功能设计原理与解决方案 与目录
  8. Atitit.atiDataStoreService   v2 新特性
  9. atitit.商业版 源码保护 与 java本地原生代码转换 的方案总结
  10. paip.python错误解决15