mysql+跨服务器+写入_MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问

跨数据库服务器,跨实例访问是比较常见的一种访问方式,在Oracle中可以通过DB LINK的方式来实现。对于MySQL而言,有一个FEDERATED存储引擎与之相对应。同样也是通过创建一个链接方式的形式来访问远程服务器上的数据。本文简要描述了FEDERATED存储引擎,以及演示了基于FEDERATED存储引擎跨实例访问的示例。

1、FEDERATED存储引擎的描述

FEDERATED存储引擎允许在不使用复制或集群技术的情况下实现远程访问数据库

创建基于FEDERATED存储引擎表的时候,服务器在数据库目录仅创建一个表定义文件,即以表名开头的.frm文件。

FEDERATED存储引擎表无任何数据存储到本地,即没有.myd文件

对于远程服务器上表的操作与本地表操作一样,仅仅是数据位于远程服务器

基本流程如下:

a4dfd89a77b8c68aee6eda8ceab2e109.png

2、安装与启用FEDERATED存储引擎

源码安装MySQL时使用DWITH_FEDERATED_STORAGE_ENGINE来配置

rpm安装方式缺省情况下已安装,只需要启用该功能即可

3、准备远程服务器环境

-- 此演示中远程服务器与本地服务器为同一服务器上的多版本多实例

-- 假定远程服务为:5.6.12(实例3406)

-- 假定本地服务器:5.6.21(实例3306)

-- 基于实例3306创建FEDERATED存储引擎表test.federated_engine以到达访问实例3406数据库tempdb.tb_engine的目的

[root@rhel64a ~]# cat /etc/issue

Red Hat Enterprise Linux Server release 6.4 (Santiago)

--启动3406的实例

[root@rhel64a ~]# /u01/app/mysql/bin/mysqld_multi start 3406

[root@rhel64a ~]# mysql -uroot -pxxx -P3406 --protocol=tcp

root@localhost[(none)]> show variables like 'server_id';

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

| Variable_name | Value |

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

| server_id     | 3406  |

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

--实例3406的版本号

root@localhost[tempdb]> show variables like 'version';

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

| Variable_name | Value      |

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

| version       | 5.6.12-log |

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

--创建数据库

root@localhost[(none)]> create database tempdb;

Query OK, 1 row affected (0.00 sec)

-- Author : Leshami

-- Blog   :http://blog.csdn.net/leshami

root@localhost[(none)]> use tempdb

Database changed

--创建用于访问的表

root@localhost[tempdb]> create table tb_engine as

-> select engine,support,comment from information_schema.engines;

Query OK, 9 rows affected (0.10 sec)

Records: 9  Duplicates: 0  Warnings: 0

--提取表的SQL语句用于创建为FEDERATED存储引擎表

root@localhost[tempdb]> show create table tb_engine \G

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

Table: tb_engine

Create Table: CREATE TABLE `tb_engine` (

`engine` varchar(64) NOT NULL DEFAULT '',

`support` varchar(8) NOT NULL DEFAULT '',

`comment` varchar(80) NOT NULL DEFAULT ''

) ENGINE=InnoDB DEFAULT CHARSET=utf8

--创建用于远程访问的账户

root@localhost[tempdb]> grant all privileges on tempdb.* to 'remote_user'@'192.168.1.131' identified by 'xxx';

Query OK, 0 rows affected (0.00 sec)

root@localhost[tempdb]> flush privileges;

Query OK, 0 rows affected (0.00 sec)

4、演示FEDERATED存储引擎跨实例访问

[root@rhel64a ~]# mysql -uroot -pxxx

root@localhost[(none)]> show variables like 'version';

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

| Variable_name | Value  |

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

| version       | 5.6.21 |

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

#查看是否支持FEDERATED引擎

root@localhost[(none)]> select * from information_schema.engines where engine='federated';

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

| ENGINE    | SUPPORT | COMMENT                        | TRANSACTIONS | XA   | SAVEPOINTS |

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

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

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

root@localhost[(none)]> exit

[root@rhel64a ~]# service mysql stop

Shutting down MySQL..[  OK  ]

#配置启用FEDERATED引擎

[root@rhel64a ~]# vi /etc/my.cnf

[root@rhel64a ~]# tail -7 /etc/my.cnf

[mysqld]

socket = /tmp/mysql3306.sock

port = 3306

pid-file = /var/lib/mysql/my3306.pid

user = mysql

server-id=3306/

federated         #添加该选项

[root@rhel64a ~]# service mysql start

Starting MySQL.[  OK  ]

[root@rhel64a ~]# mysql -uroot -pxxx

root@localhost[(none)]> select * from information_schema.engines where engine='federated';

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

| ENGINE    | SUPPORT | COMMENT                        | TRANSACTIONS | XA   | SAVEPOINTS |

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

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

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

root@localhost[(none)]> use test

-- 创建基于FEDERATED引擎的表federated_engine

root@localhost[test]> CREATE TABLE `federated_engine` (

->   `engine` varchar(64) NOT NULL DEFAULT '',

->   `support` varchar(8) NOT NULL DEFAULT '',

->   `comment` varchar(80) NOT NULL DEFAULT ''

-> ) ENGINE=FEDERATED DEFAULT CHARSET=utf8

-> CONNECTION='mysql://remote_user:xxx@192.168.1.131:3406/tempdb/tb_engine';

Query OK, 0 rows affected (0.00 sec)

-- 下面是创建后表格式文件

root@localhost[test]> system ls -hltr /var/lib/mysql/test

total 12K

-rw-rw---- 1 mysql mysql 8.5K Oct 24 08:22 federated_engine.frm

--查询表federated_engine

root@localhost[test]> select * from federated_engine limit 2;

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

| engine     | support | comment                               |

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

| MRG_MYISAM | YES     | Collection of identical MyISAM tables |

| CSV        | YES     | CSV storage engine                    |

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

--更新表federated_engine

root@localhost[test]> update federated_engine set support='NO' where engine='CSV';

Query OK, 1 row affected (0.03 sec)

Rows matched: 1  Changed: 1  Warnings: 0

--查看更新后的结果

root@localhost[test]> select * from federated_engine where engine='CSV';

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

| engine | support | comment            |

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

| CSV    | NO      | CSV storage engine |

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

5、创建FEDERATED引擎表的链接方式

scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name

scheme: A recognized connection protocol. Only mysql is supported as the scheme value at this point.

user_name: The user name for the connection. This user must have been created on the remote server, and must have suitable privileges to perform the required actions (SELECT, INSERT,UPDATE, and so forth) on the remote table.

password: (Optional) The corresponding password for user_name.

host_name: The host name or IP address of the remote server.

port_num: (Optional) The port number for the remote server. The default is 3306.

db_name: The name of the database holding the remote table.

tbl_name: The name of the remote table. The name of the local and the remote table do not have to match.

链接示例样本:

CONNECTION='mysql://username:password@hostname:port/database/tablename'

CONNECTION='mysql://username@hostname/database/tablename'

CONNECTION='mysql://username:password@hostname/database/tablename'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MYSQL避免全表扫描__如何查看sql查询是否用到索引(mysql)

MYSQL避免全表扫描 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 如:select id f…

@SuppressWarnings使用的正确姿势

SuppressWarnings比较常见,理解和使用起来都很简单。 但是就这这个机会系统的整理一下。 通过源码可以看出,支持在类、属性、方法、参数、构造方法、本地变量上使用。 SuppressWarnings注解的使用有三种: SuppressWarnings(“unchecked”)…

mysql5.7.3安装教程_最新mysql 5.7.23安装配置图文教程

2018年最新MySQL5.7详细安装与配置,总共分为四步,其中环境变量配置不是必须的。1、安装包下载2、安装过程3、环境变量配置4、连接测试一、官网下载MYSQL安装包2.选择合适你电脑系统的版本进行安装。如果有网络,选择在线安装的版本&#xff0c…

MySQL 添加where 1= 1 是否会引起索引失效

背景 在检查数据库的执行效率的时候,发现了一条查询极慢的查询sql。sql的例子如下: EXPLAIN SELECT * FROM user_point_detail_info WHERE 11 AND deleted FALSE AND app_id 2010001 AND point > 10 AND add_time BETWEEN "2021-03-12 17:0…

mysql回档命令_MySQL 备份恢复

1:备份常用工具:mysqldump, xtrabackupmysqldump: 原生数据导出工具,以sql的形式导出保存xtrabackup: percona团队提供的备份工具,基于文件系统的备份2:备份全库:mysqldump -h10.6.29.1 -uroot -p --all-da…

MySQL在like查询中是否使用到索引

mysql在使用like查询中,能不能用到索引?在什么地方使用索引呢? 在使用like的时候,如果使用‘%%’,会不会用到索引呢? EXPLAIN SELECT * FROM user WHERE username LIKE %ptd_%;上面的结果是全表扫描&#…

elasticsearch scroll 一页最大数据量_elasticsearch 百亿级数据检索案例与原理

一、前言数据平台已迭代三个版本,从头开始遇到很多常见的难题,终于有片段时间整理一些已完善的文档,在此分享以供所需朋友的实现参考,少走些弯路,在此篇幅中偏重于ES的优化,关于HBase,Hadoop的设…

使用Collections.emptyList()生成的List不支持add方法___Java Collections.emptyList方法的使用及注意事项

使用Collections.emptyList()生成的List不支持add方法 今天使用Collections.emptyList(),返回一个空的List 但是发现它不支持Add功能,调用Add会抛出unsupportedException, 在以后要返回一个空的List,并还需要后续操作时&#xff…

解决SVN代码冲突

解决SVN代码冲突 解决冲突有三种选择: 1、放弃自己的更新,使用svn revert(回滚),然后提交。在这种方式下不需要使用svn resolved(解决) 2、放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行res…

options请求

<1> 一个Option请求引发的深度解析 在当前项目中&#xff0c;前端通过POST方式访问后端的REST接口时&#xff0c;发现两条请求记录&#xff0c;一条请求的Request Method为Options&#xff0c;另一条请求的Reuest Method为Post。想要解决这个疑惑还得从以下3个概念说起…

线程中可以创建进程吗_Linux 进程线程是如何创建的?

上文讲了《Linux进程在内核眼中是什么样子的&#xff1f;》&#xff0c;可以理解内核关于进程线程的所有管理就通过一个结构体 —— task_struct。知道了内核眼中进程的描述&#xff0c;本文通过三个例子站在用户态看下进程线程是如何创建的&#xff0c;不同的创建方式又有哪些…

http请求发生了两次(options请求)

前言 自后台restful接口流行开来&#xff0c;请求了两次的情况&#xff08;options请求&#xff09;越来越普遍。笔者也在实际的项目中遇到过这种情况&#xff0c;做一下整理总结。 文章书写思路&#xff1a; 为什么发生两次请求 http的请求方式&#xff0c;包括OPTIONS、GET…

servlet怎么接受请求_谁再问Servlet的问题,我就亲自上门来教学了

1. 概述在这篇简短的文章中&#xff0c;我们将从概念上理解什么是servlet 和 servlet 容器以及它们是如何工作的。同时&#xff0c;还能在请求、响应、会话对象、共享变量和多线程的上下文中看到它们的身影。2. Servlets 和 它的容器servlet 是 JEE 用于 web 开发常用的组件。它…

Mysql中SQL语句不使用索引的情况

Mysql中SQL语句不使用索引的情况 MySQL查询不使用索引汇总 众所周知&#xff0c;增加索引是提高查询速度的有效途径&#xff0c;但是很多时候&#xff0c;即使增加了索引&#xff0c;查询仍然不使用索引&#xff0c;这种情况严重影响性能&#xff0c;这里就简单总结几条MySQL…

详解mysql什么时候不走索引

全值匹配我最爱&#xff0c;最左前缀要遵守&#xff1b; 带头大哥不能死&#xff0c;中间兄弟不能断&#xff1b; 索引列上不计算&#xff0c;范围之后全失效&#xff1b; LIKE百分写最右&#xff0c;覆盖索引不写 *&#xff1b; 不等空值还有or&#xff0c;索引失效要少用&…

unbuntu cmake安装mysql_ubuntu下编译安装mysql5.5

1.主要步骤如下添加mysql用户和用户组—>下载源码—>解压源码安装编译2个套件—>编译源码-安装编译好的程序-配置mysql启动服务2.Mysql源码解压建好相应的安装目录&#xff0c;将压缩文件复制到安装目录并解压。3.添加用户组Sudo groupadd mysql4.添加用户Sudo userad…

mysql删库后恢复_记一次MySQL删库的数据恢复

昨天因为不可描述的原因&#xff0c;数据库直接被 drop database删除。在第一时间停止数据库服务和Web服务&#xff0c;备份MySQL数据目录下的所有文件之后&#xff0c;开始走上数据恢复之路。第一次干这种事&#xff0c;各种不得法。因为我们既没有备份&#xff0c;也没有开启…

Mysql 中的Text字段的范围

Mysql 中的Text字段的范围 text&#xff1a;存储可变长度的非Unicode数据&#xff0c;最大长度为2^31-1个字符。text列不能有默认值&#xff0c;存储或检索过程中&#xff0c;不存在大小写转换&#xff0c;后面如果指定长度&#xff0c;不会报错误&#xff0c;但是这个长度是不…

python实现语义分割_语义分割算法之FCN论文阅读及源码实现

论文原文创新点提出了一种端到端的做语义分割的方法&#xff0c;在这里插入图片描述如图&#xff0c;直接拿分割的ground truth作为监督信息&#xff0c;训练一个端到端的网络&#xff0c;让网络做p像素级别的预测。如何设计网络结构如何做像素级别的预测在这里插入图片描述在V…

右上角的引用文献格式_论文要引用的小符号右上角怎么打?

上标是【现在】论【文的】书写【都会】【用到】引用【的小】符号&#xff0c;上标【一般】用【来对】所标的【文字】【或者】段落【进行】进【一步】【的解】释&#xff0c;【所以】常【用来】【解释】含义&#xff0c;【或者】出处&#xff0c;【而其】【解释】【一般】在书【…