使用MySQL联合存储引擎(FEDERATED),实现对远程服务器的表进行操作,或者实现数据库数据的分布式存储

本文介绍了MySQL联合存储引擎的使用,它允许在本地表中访问远程数据库的数据,无需复制或集群技术。通过在配置文件中启用FEDERATED引擎并重启MySQL服务,可以实现远程表的本地操作。创建联合表时,本地表定义与远程表相同,连接字符串包含远程服务器的详细信息。测试联合表功能的方法是对比本地操作和远程数据的一致性。
摘要由CSDN通过智能技术生成

一、概述

使用标准存储引擎创建表时,该表由表定义关联的数据组成。在创建表时使用联合存储引擎,本地数据库和远程数据库的表定义是相同的,但数据的物理存储是在远程服务器上处理的。这实现了从远程 MySQL 数据库访问数据,而无需使用复制或群集技术。查询本地表会自动从远程(联合)表中提取数据。本地表上不存储任何数据。 通过使用MySQL联合存储引擎,可以实现对远程服务器的表进行操作,或实现数据库数据的分布式存储。联合表结构如下:

二、联合存储引擎的启用

1.查看引擎是否被启用

在MySQL命令行使用以下命令查看引擎状态:

SHOW ENGINES

如果 FEDERATED 的支持为: NO ,则需要启用该引擎。

若该值为YES,则引擎已启用。

2.启用引擎

具体做法为:

在MySQL的配置文件my.cnf(或者my.ini)中的[mysqld]下面增添一行:

[mysqld]
federated

点击保存。

3.重新启动MySQL服务

service mysql restart #在linux服务器

三、创建联合表的一种方式

1.在远程服务器上创建表

以下为创建语句示例:

CREATE TABLE `tablename` (

  ......(此处填写对应创建语句)

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

 2.在本地服务器上创建表

以下为创建语句示例:

CREATE TABLE `tablename` (

  ......(此处填写对应创建语句)

) 
ENGINE=FEDERATED
DEFAULT CHARSET=utf8mb3
CONNECTION='mysql://用户名:密码@你的IP:端口/数据库名/数据表名';

上面创建语句的最后一行 连接字符串的格式为:

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

scheme:公认的连接协议。此时仅支持将其作为scheme值 mysql
user_name:连接的用户名。此用户必须是在远程服务器上创建的,并且必须具有适当的权限才能对远程表执行所需的操作(SELECT、INSERT、UPDATE 等)
password:(可选)user_name的相应密码。
host_name:远程服务器的主机名或 IP 地址
port_num:(可选)远程服务器的端口号,默认值为 3306
db_name:保存远程表的数据库的名称
tb_name:远程表的名称。本地表和远程表的名称不必匹配

以下为示例连接字符串:

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

四、测试

在本地对表进行操作,然后在远程数据库中对 对应的表进行查询,若其数据一致,则创建成功。

更多信息和注意事项,请参考:

The FEDERATED Storage Engine

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值