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


这篇文章主要讲解了“怎么通过mysql的federated插件实现dblink功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么通过mysql的federated插件实现dblink功能”吧!db1:172.26.99.157 3306(源库)db2:172.26.99.157 3310(通过dblink调用源库)[root@node7 lepus]# mmmysql: [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 357Server 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 itsaffiliates. Other names may be trademarks of their respectiveowners.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 existsmysql> exitBye重启数据库,# 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中添加参数:federatedmysql> 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 -pmysql> 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: 0mysql> delete from options where name =’sql_mode’;Query OK, 1 row affected (0.01 sec)除了直接使用连接串的方法,还可以先创建server,然后建表时调用server:还可以使用server的方式将连接串存储起来。CREATE SERVER dblinkFOREIGN DATA WRAPPER mysqlOPTIONS (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=FEDERATEDDEFAULT CHARSET=utf8CONNECTION=’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 dblinkFOREIGN DATA WRAPPER mysqlOPTIONS (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 options2G*************************** 1. row *************************** Table: options2Create 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功能这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是开发云,小编将为大家推送更多相关知识点的文章,欢迎关注!

相关推荐: Mysql怎么设置允许外网访问

这篇文章主要介绍了Mysql怎么设置允许外网访问,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。Mysql允许外网访问设置的方法:首先打开mysql输入密码,并输入【use mysql】;然后创建ho…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/20 18:06
下一篇 06/20 18:06

相关推荐