最近项目中涉及MySQL数据库视图的创建,需要整合两个位于不同服务器上数据库的内容,就遇到了远程访问数据库的问题。在oracle中可以通过dblink来实现跨本地数据库来访问另外一个数据库中的数据。通过在网上查找,发现可以通过MySQL中的federated插件来实现类似的功能。

操作环境:

宿主机为win8系统,MySQL数据库,ip:192.168.1.98;从机为VMware虚拟机中的Linux系统,版本为CentOS6.5,MySQL数据库,ip:192.168.1.106。

实现功能:

可以在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插件

  1. 安装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插件已经启用

  1. 配置/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 |

±-------------------±--------±---------------------------------------------------------------±-------------±-----±-----------+

已经设置为默认启动了。

  1. 在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=‘电路数据表’;

  1. 在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=FEDERATEDAUTO_INCREMENT=1DEFAULT 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端运行

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

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

mysql> select *from e_eledata_link;

MySQL中dblink的实现(通过federated引擎实现)的更多相关文章

  1. Mysql的跨服务器 关联查询--Federated引擎

    1.确认开启Federated引擎     查询FEDERATED功能是否开启: show ENGINES;       2.如果状态为NO则需修改my.ini文件,增加一行federated配置: ...

  2. mysql中的四种常用的引擎

    MySQL常用的引擎有:InnoDB存储引擎.MyISAM存储引擎.MEMORY存储引擎.Archive存储引擎 InnoDB存储引擎 InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID) ...

  3. MySql中启用InnoDB数据引擎的方法

    1.存储引擎是什么? Mysql中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力.通过选择不同的技术, ...

  4. MySQL中MyISAM和InnoDB两种主流存储引擎的特点

    一.数据库引擎(Engines)的概念 MySQ5.6L的架构图: MySQL的存储引擎全称为(Pluggable Storage Engines)插件式存储引擎.MySQL的所有逻辑概念,包括SQL ...

  5. 转!!MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)

    MySQL中的存储引擎: 1.存储引擎的概念 2.查看MySQL所支持的存储引擎 3.MySQL中几种常用存储引擎的特点 4.存储引擎之间的相互转化 一.存储引擎: 1.存储引擎其实就是如何实现存储数 ...

  6. MySQL中MyISAM引擎与InnoDB引擎性能简单测试

    [硬件配置]CPU : AMD2500+ (1.8G)内存: 1G/现代硬盘: 80G/IDE[软件配置]OS : Windows XP SP2SE : PHP5.2.1DB : MySQL5.0.3 ...

  7. mysql中的存储引擎

    MySQL中常用的几种存储引擎:innoDB.bdb.myisam.memory以及这几个引擎的讲解: InnoDB存储引擎: (1) innodb存储引擎该mysql表提供了事务,回滚以及系统崩溃修 ...

  8. MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK

    原文地址:http://it.dataguru.cn/article-3352-1.html 摘要: 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来 ...

  9. MySQL FEDERATED引擎使用示例, 类似Oracle DBLINK(转)

    1 引擎说明 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. 有点类似Oracle中的 数据库链接(DBLINK). 要允许这个存储引擎, 当 ...

随机推荐

  1. yum安装软件报错Segmentation fault处理

    yum安装软件报错Segmentation fault处理 在使用yum 更新软件时提示:Segmentation fault 中文错误提示: 段错误 [root@CMS-BAK:/usr/local ...

  2. 【原创】大叔问题定位分享(8)提交spark任务报错 Caused by: java.lang.ClassNotFoundException: org.I0Itec.zkclient.exception.ZkNoNodeException

    spark 2.1.1 一 问题重现 spark-submit --master local[*] --class app.package.AppClass --jars /jarpath/zkcli ...

  3. hadoop的master和slave模式

    hadoop的集群是基于master/slave模式. namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slav ...

  4. JavaScript入门学习笔记(表单验证)

    表单验证: 在数据被送到服务器之前对HTML表单中的输入数据进行验证,避免服务器频繁验证信息造成用户体验差. (1)表单数据是否为空 (2)输入的信息格式是否正确 (3)输入数据的类型是否正确 必填( ...

  5. 11、Grafana 5.0 新功能特性(译文)

      Grafana v5.0的新功能 这是Grafana有史以来最重大的更新. 本文将详细介绍主要的新功能和增强功能. New Dashboard Layout Engine enables a mu ...

  6. 饮冰三年-人工智能-Python-19 Python网络编程

    Socket:套接字.作用:我们只需要安照socket的规定去编程,就不需要深入理解tcp/udp协议也可以实现 1:TCP协议 1.1  客户端服务端循环收发消息 # 1:引入stock模块(导包) ...

  7. kuangbin带你飞dp专题-基础dp

    dp HDU - 1257 最少拦截系统 最长递增子序列 #include<iostream> using namespace std; const int maxn=1e7; int a ...

  8. cmake教程

    1 教程 cmake界的hello world[2] 进阶的入门教程参考[3] 2 引用 [1] cmake官网 [2] 在 linux 下使用 CMake 构建应用程序 [3] Valgrind官网

  9. tar 压缩归档

    压缩归档 掌握归档的定义:归档(archiving)就是将许多文件(或目录)打包成一个文件. 了解归档的目的:归档的目的就是方便备份.还原及文件的传输操作. 掌握tar命令的功能:将多个文件(也可能包 ...

  10. Aragorn's Story HDU - 3966 -树剖模板

    HDU - 3966 思路 :树链剖分就是可以把一个路径上的点映射成几段连续的区间上.这样对于连续的区间可以用线段树维护, 对于每一段连续的区间都可以通过top [ ]数组很快的找到这段连续区间的头. ...