MySQL FEDERATED存储引擎

2024年 7月 22日 63.1k 0

概述

可将FEDERATED存储引擎的功能类比为oracle的DBLINK或SQLSERVER的linkedserver,默认情况下mysql不启用该存储引擎

启用FEDERATED存储引擎

检查是否开启FEDERATED:

show engines;

从结果中看FEDERATED的support是No,说明没有启用;
如果压根找不到FEDERATED的话说明没有编译进去,需要重新安装,FEDERATED支持动态安装

install plugin federated soname 'ha_federated.so';

如果需要启用FEDERATED,需要在/etc/my.cnf中[mysqld]模块下添加federated,然后重启mysql就生效

vim /etc/my.cnf

[mysqld]
federated

创建用户

在本地数据库上创建远程用户并将Link库的所有权限授权:

create user remote_user@'%' identified by '123';
grant all on Link.* to remote_user@'%';
flush privileges;
create user remote_user@'localhost' identified by '123';
grant all on Link.* to remote_user@'localhost';
flush privileges;
select user,host from mysql.user;

在远程数据库上创建本地用户并将Link库的所有权限授权:

create user remote_user@'%' identified by '123';
grant all on Link.* to remote_user@'%';
flush privileges;
create user remote_user@'localhost' identified by '123';
grant all on Link.* to remote_user@'localhost';
flush privileges;
select user,host from mysql.user;

创建连接

远程表:

create table sys_user (
id int not null,
username varchar(50) default NULL,
PRIMARY KEY (id)
)ENGINE = InnoDB DEFAULT CHARSET=utf8;

本地表和远程表需要表结构一致,在本地数据库执行如下建表语句

create table link_yun_sys_user (
id int not null,
username varchar(50) default NULL,
PRIMARY KEY (id)
)ENGINE = FEDERATED CONNECTION='mysql://remote_user:123@10.10.1.175:3306/Link/sys_user';

CONNECTION格式
mysql://user_name[:password]@host_name[:port_num]/db_name/tb1_name
其内容解释如下:
mysql:公认连接协议,此处只能写mysql
user_name:连接使用的用户名,必须在远程服务器的数据库上创建
password:用户的密码
host_name:远程服务器主机名或ip地址
port_num:远程服务器端口号,默认3306
db_name:远程表所在库名
tb1_name:远程表名,可以和本地表名不一致,但结构要相同,且仅支持InnoDB和MyISAM

创建之后进行测试验证即可

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论