mysql 使用federated 引擎实现dblink 远程表访问

MySQL中针对不同的功能需求提供了不同的存储引擎。所谓的存储引擎也就是MySQL下特定接口的具体实现。federated是其中一个专门针对远程数据库的实现。一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件。但通过federated引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中。通过这个引擎可以实现类似Oracle DBLINK的远程数据访问功能。


问题实现:

source(A)

用户名:root

密码:root

端口:3306

ip=10.25.8.211

target(B)

用户名:root

密码:root

B操作A端的数据库。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

1. source(A) 端创建测试表

create table person(id int(11) not null,

name varchar(11) default null,

primary key('id')

);

insert into person(1,'jsfdf');

insert into person(2,'eeeeg');

insert into person(3,'hhhhg');

insert into person(4,'dddfg');

insert into person(5,'ggggg');

 

2. source 端查看测试表的建表语句

show create table s ;

//create table person(id int(11) not null,

name varchar(11) default null,

primary key('id')

);engine=innodb default charset=latin1;

3. source端创建用户并且授权

grant all privileges on source database.source table to target username ideentified by target password;

grant all privileges on source database.source table to source ip ideentified by target password;

show grants for target username;

//实例

GRANT ALL PRIVILEGES ON db1.person TO root IDENTIFIED BY 'root';

GRANT ALL PRIVILEGES ON db1.person TO root@10.25.8.211 IDENTIFIED BY 'root';

SHOW GRANTS FOR root;

 

4. 查看target(B)端是否安装了FEDERATED存储引擎

 

a. 查询是否安装federated引擎:show engines;

 

MySQL没有DB Link,所以只能通过federated引擎实现远程数据库连接。(本地MySQL数据库要访问远程MySQL数据库的表中的数据必须通过FEDERATED存储引擎来实现)首先查询是否安装了federated引擎:

b. 开启federated引擎:my.int文件里的[mysqld]下面加一行federated,保存,重启mysql服务(重启计算机),再用命令show engines查询,即可。

查得federated引擎处于no状态,首先要开启federated引擎。

开启federated引擎的方法:

windows下,找到MYSQL的安装目录里的my.int文件,如果没有,就把my-default.ini文件复制一个改名为my.int,然后在my.int文件里的[mysqld]下面加一行federated,保存,重启mysql服务(重启计算机),再用命令show engines查询,就可以看到federated的状态是yes

 

5. target端定义基于federated存储引擎的表。

create table person1(id int(11) not null,

name varchar(11) default null,

primary key(id)

)engine=federated connection='mysql://root:root@10.25.8.211:3306/db1/person';

connection='mysql://target端)username:target端)password@(source)ip:(source)端口/(source)数据库/(source)';

6. 检查远程数据表链接:

select * from person1;//操作成功

 

delete from person1 where id=1;

 

alter table person1 add grade int(11);

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值