mysql federated 插件,通过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 -h127.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 插件,通过mysql的federated插件实现dblink功能相关推荐
- linux安装12c oem,OEM12C(12.1.0.5)安装插件监控mysql(linux)
目录结构: 环境说明: oms:12.1.0.5 os:centos 6.X MYSQL: 5.7.21 OS:centos 7.X 一.安装插件mysql database 下载地址: http ...
- emq+mysql设置_EMQ--添加mysql认证及mysql插件访问控制
EMQ-百万级分布式开源物联网MQTT消息服务器. MQTT 认证设置 EMQ 消息服务器认证由一系列认证插件(Plugin)提供,系统支持按用户名密码.ClientID 或匿名认证. 系统默认开启匿 ...
- 使用sublime的SQLTools插件访问MySQL的配置方法
写在前面 最近抽时间学习一下数据库的查询语句, 首当其冲的当然就是开源的MySQL了, 不过这个软件命令行界面不太好用, 就算是使用了命令行增强工具mycli效果也不明显, 插入数据时候好几个回车就比 ...
- 【亲自验证】Navicat连接MySql提示无法加载身份验证插件“缓存_sha2_密码”?
Navicat连接MySql提示无法加载身份验证插件"缓存_sha2_密码" [1]首先登录MySql(见下图) [2]管理员身份运行CMD(见下图) [3]如图所示 [4]Nav ...
- mysql密码认证插件_关于mysql:无法加载身份验证插件’caching_sha2_password’
我正在将MySQL-8.0与MySQL Workbench连接起来并出现以下错误: Authentication plugin 'caching_sha2_password' cannot be lo ...
- emqtt mysql认证_Emqtt -- 05 -- Mysql插件认证及访问控制
了解了 Clientid 认证后,现在我们再来了解下 Mysql 插件认证以及访问控制,默认关闭了匿名认证 一.创建用户表和控制表 根据官方文档,用户表的名称为:mqtt_user,访问控制表的名称为 ...
- mysql 1524_Debian/Ubuntu遇到MySQL错误ERROR 1524 (HY000):插件未加载的解决
如果你在Debian/Ubuntu操作系统上遇到MySQL错误:ERROR 1524 (HY000): Plugin 'unix_socket' is not loaded(插件'unix_socke ...
- mysql federated 缺点_MySQL存储引擎--------Federated最佳实战
1. 背景 * 本地MySQL数据库要访问远程MySQL数据库的表中的数据, 必须通过FEDERATED存储引擎来实现. * 有点类似Oracle中的数据库链接(DBLINK). 要允许这个存储引擎, ...
- code-server、docker-compose安装wordpress+mysql、wordpress公式插件、markdown插件、目录插件、调序插件、统计插件、分享点赞打赏插件
文章目录 缘起 一.code-server 1.1 code-server简介 1.2 code-server安装和启动 1.3 code-server安全配置 1.3.1 域名申请和备案 1.3.2 ...
最新文章
- 十二、springboot 详解RestControllerAdvice(ControllerAdvice)
- 关于嵌入式开发,到底需要会多少门语言,做好准备了吗
- java properties读取缓存_Java读取Properties文件
- 3月6日 输入与输出 数据类型 运算符
- CSS :before :after 伪类选择器
- YASnippet - emacs 的代码片段管理工具
- zend studio php 5.5,PHP - 下载 - Zend Studio 5.5
- C# 异步工具类 及一点小小的重构经验
- 20191116每日一句
- fgui快速接入到一个laya实例项目中
- phpstudy2020安装及简单使用教程
- (CVPR 2020) PointGroup: Dual-Set Point Grouping for 3D Instance Segmentation
- linux中gimp命令截图,Linux利用GIMP截图
- Comparator.comparing排序的坑
- Java Pair的使用
- Redis设计与实现——数据结构
- Java Socket 如何接收byte和String
- Python案例之QQ空间自动登录程序实现
- after all 用法, although but 用法
- 加盟代理的骗局[转载]