MySQL—FEDERATED存储引擎的使用

FEDERATED存储引擎允许MySQL访问远程服务器上的数据。要启用它,需检查其在系统中的状态,如未开启则需安装或在配置文件中添加支持。接着,创建远程用户并授权,然后在本地创建FEDERATED表连接到远程表。这样,对本地表的操作将实时同步到远程数据库。

FEDERATED存储引擎的功能与oracle的DBLINK基本类似,主要用来提供对远程MySQL服务器上面的数据的访问接口,默认情况下面,mysql是不启用该存储引擎的。

###开启FEDERATED存储引擎

1、查看是否开启FEDERATED存储引擎

mysql>show engines;

由此可以看出FEDERATED的状态是no,说明没有开启,如果没有的话说明没有编译进去,需要重新安装,FEDERATED是支持动态安装。

install plugin federated soname 'ha_federated.so';

要想开启的话是support为YES,可以在/etc/my.cnf/内添加federated(主要在mysqld的模块下添加,放在其他模块下无法识别变量),然后重启MySQL就可以了。

###创建远程用户并授权(本地数据库)

```

mysql> create user remote_user@'%' identified by '123';

mysql> create database test;

mysql> grant all on test.* to remote_user@'%';

mysql> flush privileges;

mysql> create user remote_user@'localhost' identified by '123';

mysql> grant all on test.* to remote_user@'localhost';

mysql> flush privileges;

mysql> select user,host from mysql.user;

```

###创建连接

本地数据库:

```

mysql> create table local_fed(

id int not null auto_increment,

name varchar(32) not null default '',

other int not null default '0',

primary key(id)

)

engine=federated

default charset=utf8mb4

connection='mysql://remote_user:123@192.168.214.129:3380/test/test_table';

```

注:

schema://user_name[:password]@host_name[:port_num]/db_name/tb1_name

解释说明:

schema:公认的连接协议,此时仅mysql作为该值;

user_name:连接的用户名,用户必须在远程服务器上创建;

password:用户名密码;

host_name:远程服务器的主机名或ip地址;

port_num:远程服务器的端口号,默认是3306

db_name:远程表的数据库名称;

tb1_name:远程表的名称,可以和本地表的名称不匹配。

远程数据库:表名可以不一致,但结构要一致。

```

CREATE TABLE test_table (

id INT(20) NOT NULL AUTO_INCREMENT,

name VARCHAR(32) NOT NULL DEFAULT '',

other INT(20) NOT NULL DEFAULT '0',

PRIMARY KEY (id),

INDEX name (name),

INDEX other_key (other)

)

ENGINE=MyISAM

DEFAULT CHARSET=utf8mb4;

```

###测试

在本地数据库内插入一条数据,远程数据库内就会实时同步数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值