返回顶部
首页 > 资讯 > 数据库 >怎么通过mysql的federated插件实现dblink功能
  • 901
分享到

怎么通过mysql的federated插件实现dblink功能

2024-04-02 19:04:59 901人浏览 安东尼
摘要

这篇文章主要讲解了“怎么通过Mysql的federated插件实现dblink功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么通过mysql的fede

这篇文章主要讲解了“怎么通过Mysql的federated插件实现dblink功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么通过mysql的federated插件实现dblink功能”吧!

db1:172.26.99.157 3306(源库)

db2:172.26.99.157 3310(通过dblink调用源库)

[root@node7 lepus]# mm

mysql: [Warning] Using a passWord on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 357

Server version: 5.7.29-log MySQL CommUnity Server (GPL)

Copyright (c) 2000, 2020, oracle and/or its affiliates. All rights reserved.

Oracle is a reGIStered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show engines;

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

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

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

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

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

| CSV                | YES     | CSV 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         |

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

| ARCHive            | YES     | Archive storage engine                                         | NO           | NO   | NO         |

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

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

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

9 rows in set (0.00 sec)

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

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

mysql> exit

Bye

重启数据库

# mysqladmin -uroot -P3310 -p -h 127.0.0.1 shutdown

# mysqld --defaults-file=/mysql/data/my.cnf --user=mysql --datadir=/mysql/data/3310  --basedir=/mysql/app/mysql --pid-file=/mysql/data/mysql3310.pid --Socket=/mysql/data/mysql3310.sock --port=3310 & 

在my.cnf中添加参数:

federated

mysql> show engines;

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

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

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

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

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

| CSV                | YES     | CSV 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         |

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

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

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

| FEDERATED          | YES     | Federated MySQL storage engine                                 | NO           | NO   | NO         |

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

9 rows in set (0.00 sec)

@3306:

# mysql -uroot -P3306 -h227.0.0.1 -p

mysql> create database testdb;

mysql> use testdb;

mysql> CREATE TABLE `options` (

    ->   `name` varchar(50) DEFAULT NULL,

    ->   `value` varchar(255) DEFAULT NULL,

    ->   `description` varchar(100) DEFAULT NULL,

    ->   KEY `idx_name` (`name`) USING BTREE

    -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

@33310:

mysql> use tianlei;

mysql> CREATE TABLE `options` (

    ->   `name` varchar(50) DEFAULT NULL,

    ->   `value` varchar(255) DEFAULT NULL,

    ->   `description` varchar(100) DEFAULT NULL,

    ->   KEY `idx_name` (`name`) USING BTREE

    -> ) ENGINE=FEDERATED DEFAULT CHARSET=utf8

    -> CONNECTION='mysql://root:root123@172.26.99.157:3306/testdb/options';

Query OK, 0 rows affected (0.01 sec)

mysql> select * from options;

Empty set (0.01 sec)

@3306:

mysql> 

mysql> insert into options (name,value ) values ('log','Y');

Query OK, 1 row affected (0.00 sec)

mysql> select * from options;

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

| name | value | description |

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

| log  | Y     | NULL        |

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

1 row in set (0.00 sec)

@3310:

mysql> select * from options;

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

| name | value | description |

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

| log  | Y     | NULL        |

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

1 row in set (0.00 sec)

mysql> insert into options (name,value ) values ('sql_mode','N');

Query OK, 1 row affected (0.01 sec)

mysql> select * from options;

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

| name     | value | description |

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

| log      | Y     | NULL        |

| sql_mode | N     | NULL        |

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

2 rows in set (0.00 sec)

mysql> update options set description='abc' where name='log';

Query OK, 1 row affected (0.01 sec)

Rows matched: 1  Changed: 1  Warnings: 0

mysql> delete from options where name ='sql_mode';

Query OK, 1 row affected (0.01 sec)

除了直接使用连接串的方法,还可以先创建server,然后建表时调用server:

还可以使用server的方式将连接串存储起来。

CREATE SERVER dblink

FOREIGN DATA WRAPPER mysql

OPTIONS (USER 'lepus', HOST '172.26.99.157', PORT 3306, DATABASE 'testdb');

CREATE TABLE `options2` (

  `name` varchar(50) DEFAULT NULL,

  `value` varchar(255) DEFAULT NULL,

  `description` varchar(100) DEFAULT NULL,

  KEY `idx_name` (`name`) USING BTREE

) ENGINE=FEDERATED

DEFAULT CHARSET=utf8

CONNECTION='dblink/options';

mysql> select * from options2;

ERROR 1429 (HY000): Unable to connect to foreign data source: Access denied for user 'lepus'@'172.26.99.157' (using password: 

mysql> drop server dblink;

Query OK, 1 row affected (0.00 sec)

CREATE SERVER dblink

FOREIGN DATA WRAPPER mysql

OPTIONS (USER 'lepus', HOST '172.26.99.157', PORT 3306, DATABASE 'testdb',PASSWORD 'lepus');

mysql> CREATE SERVER dblink

    -> FOREIGN DATA WRAPPER mysql

    -> OPTIONS (USER 'lepus', HOST '172.26.99.157', PORT 3306, DATABASE 'testdb',PASSWORD 'lepus');

Query OK, 1 row affected (0.01 sec)

mysql> select * from options2;

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

| name | value | description |

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

| log  | Y     | abc         |

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

1 row in set (0.01 sec)

mysql> show create table options2\G

*************************** 1. row ***************************

       Table: options2

Create Table: CREATE TABLE `options2` (

  `name` varchar(50) DEFAULT NULL,

  `value` varchar(255) DEFAULT NULL,

  `description` varchar(100) DEFAULT NULL,

  KEY `idx_name` (`name`) USING BTREE

) ENGINE=FEDERATED DEFAULT CHARSET=utf8 CONNECTION='dblink/options'

1 row in set (0.00 sec)

在mysql 5.7官方文档中有federated引擎的具体介绍,地址为:

https://dev.mysql.com/doc/refman/5.7/en/federated-storage-engine.html

远程服务器中包括表定义和数据,可以是myisam、innodb或其他引擎;

本地服务器中只包括相同表结构的federated引擎表和远程服务器的连接串信息。增删改查操作都需要发到远程服务器中。

数据交互如下:

1.存储引擎查看FEDERATED表拥有的每一列,并构造引用远程表的适当SQL语句

2.语句使用MySQL客户端api发送到远程服务器

3.远程服务器处理语句,本地服务器检索语句产生的所有结果(受影响的行数或结果集)

4.如果语句生成了结果集,则每一列都转换为FEDERATED引擎所期望的内部存储引擎格式,并可用于向发出原始语句的客户端显示结果。

限制:

远端服务器必须是mysql

在调用前,FEDERATED指向的远端表必须存在

可以指向FEDERATED引擎表,注意不要循环嵌套

FEDERATED引擎无法使用索引,如果结果集很大,数据存放在内存中,可能使用大量swap甚至hang住。

FEDERATED引擎表支持insert、update、delete、select、truncate table操作和索引操作,但不支持alter table操作

能接受insert …… on deplicate key update,但不生效,有重复值仍然会报错

不支持事务

可以进行批量插入操作,但注意大小不要超过服务器建能传输的最大包大小

FEDERATED引擎表无法获知远程服务器上表的变化

使用连接串时,密码不能包括@符号

INSERT_id和时间戳选项不会传播到data provider

针对FEDERATED表发出的任何DROP TABLE语句只删除本地表,而不删除远程表

不使用查询缓存

不支持用户定义的分区

感谢各位的阅读,以上就是“怎么通过mysql的federated插件实现dblink功能”的内容了,经过本文的学习后,相信大家对怎么通过mysql的federated插件实现dblink功能这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么通过mysql的federated插件实现dblink功能

本文链接: https://lsjlt.com/news/59921.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么通过mysql的federated插件实现dblink功能
    这篇文章主要讲解了“怎么通过mysql的federated插件实现dblink功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么通过mysql的fede...
    99+
    2024-04-02
  • 利用MySQL之federated引擎实现DBLink功能
    有时候我们需要跨库join查询,但是配置多数据源成本又太高,Oracle提供了DBLink功能,MySQL中也有类似的实现:federated-engine。 MySQL中使用federated引擎的表能够映射远程数据库的表,本...
    99+
    2014-12-02
    利用MySQL之federated引擎实现DBLink功能
  • FEDERATED存储引擎实现oracle dblink功能及弊端分别是什么
    这篇文章给大家介绍FEDERATED存储引擎实现oracle dblink功能及弊端分别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 mysql&n...
    99+
    2024-04-02
  • php怎么实现插件功能
    本教程操作环境:Windows7系统、PHP8.1版、Dell G3电脑。php怎么实现插件功能?php实现插件插件很多从事互联网行业或者开发的人员来不是很陌生,wordpress之所以为什么那么受欢迎,很大部分是因为他的强大的插件库,还要...
    99+
    2022-11-25
    插件 php
  • 怎么通过Java实现文件断点续传功能
    这篇文章主要介绍“怎么通过Java实现文件断点续传功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么通过Java实现文件断点续传功能”文章能帮助大家解决问题。什么是断点续传用户上传大文件,网络差...
    99+
    2023-06-30
  • 怎样通过Vue实现@人的功能
    本篇文章为大家展示了怎样通过Vue实现@人的功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下面采用vue,同时增加鼠标点击事件和一些页面小优化基本结构新建一个sandBox.vue文件编写功能的...
    99+
    2023-06-22
  • 怎么用jQuery.cookie.js插件实现换肤功能
    本篇内容主要讲解“怎么用jQuery.cookie.js插件实现换肤功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用jQuery.cookie.js插件...
    99+
    2024-04-02
  • Vue怎么用插件实现打印功能
    这篇文章主要介绍“Vue怎么用插件实现打印功能”,在日常操作中,相信很多人在Vue怎么用插件实现打印功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue怎么用插件实现打印功能”的疑惑有所帮助!接下来,请跟...
    99+
    2023-07-05
  • js实现删除功能的插件
    本篇内容主要讲解“js实现删除功能的插件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“js实现删除功能的插件”吧!(function(jQuery){$.del...
    99+
    2024-04-02
  • 通过Java实现文件断点续传功能
    目录什么是断点续传解决方案效果演示参考代码前端后端什么是断点续传 用户上传大文件,网络差点的需要历时数小时,万一线路中断,不具备断点续传的服务器就只能从头重传,而断点续传就是,允许用...
    99+
    2024-04-02
  • React通过conetxt实现多组件传值功能
    该功能实现效果类似于vue的provide/inject 而React可通过context进行完成 定义一个公共的文件context/Theme.jsx import { cr...
    99+
    2024-04-02
  • 如何通过Vue实现@人的功能
    本文采用vue,同时增加鼠标点击事件和一些页面小优化 基本结构 新建一个sandBox.vue文件编写功能的基本结构 <div class="content">...
    99+
    2024-04-02
  • 如何通过Oracle实现自动发邮件功能
    在内网项目、外网项目中多有 需要自动监控发邮件提醒的功能,因为邮件功能最便捷、便宜、不用开接口,不用接口费用。现 提供 我在一个内网项目中的使用案例: 案例背景: 在有限的资源下,能够自动给下级单位发布 数据考核评分(自动评分)和...
    99+
    2019-09-17
    如何通过Oracle实现自动发邮件功能
  • 通过变换矩阵怎么实现canvas的缩放功能
    本篇文章为大家展示了通过变换矩阵怎么实现canvas的缩放功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。第一步就是监听鼠标的滚轮事件,在滚轮事件中根据鼠标的滚动以及基于前一次的变换,重新设置co...
    99+
    2023-06-09
  • react-router-dom v6 通过outlet实现keepAlive 功能的实现
    本文主要介绍了react-router-dom v6 通过outlet实现keepAlive 功能的实现,具体如下: keepAlive代码: import React, { us...
    99+
    2024-04-02
  • 使用PHPMailer实现PHP通过QQ邮箱发邮件功能
    第一步 composer require phpmailer/phpmailer 或直接访问https://github.com/PHPMailer/PHPMailer/下载 第二步 检查是否开启socket(PHPMailer 需要 PH...
    99+
    2023-09-06
    php 开发语言
  • 如何通过vue封装tree组件实现搜索功能
    本篇文章和大家了解一下如何通过vue封装tree组件实现搜索功能。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。我使用的是 vue2 + antd, 那么 antd 的 tree 组件中没有给我们封装搜索,其官网提供的搜索...
    99+
    2023-07-06
  • Cordova插件实现JavaScript与Java的通信的详细过程
    背景 Cordova平台是开源的跨平台开发框架,被广泛应用于移动应用开发领域,可以开发跨安卓、iOS等系统的应用。Cordova平台是基于HTML/JavaScript语言,它是如何...
    99+
    2024-04-02
  • Java中怎么通过调用jna实现语音识别功能
    Java中怎么通过调用jna实现语音识别功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。JNAjava调用.dll获取.so一般通过JNI,但是JNI的使用比较复杂,需要用C...
    99+
    2023-06-17
  • ubuntu中怎么通过配置Pureftpd实现匿名登录功能
    ubuntu中怎么通过配置Pureftpd实现匿名登录功能,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Pureftpd是一款快速,高质量,功能齐全的ftp服务器,最重要的...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作