mysql跨服务器访问另一个mysql服务器得访问数据(Windows版)

1. 简介

mysql 提供了一个类似Oracle中的数据库链接(DBLINK)功能的存储引擎–FEDERATED。当我们创建一个以FEDERATED为存储引擎的表时,服务器在数据库目录只创建一个表定义文件。文件由表的名字开始,并有一个frm扩展名。无其它文件被创建,因为实际的数据在一个远程数据库上。这不同于为本地表工作的存储引擎的方式。

对本地的Federated存储表操作增删改,实际上这些命令都被发到主服务器上的数据库执行,本地的Federated存储表会映射最新的远程数据;

2. 查询Federated引擎是否启动支持

show engines;

mysql跨服务器访问另一个mysql服务器得访问数据(Windows版)_第1张图片r

3.如果没有启动支持则按照下面的方法进行启动

a)找到my.ini文件,一般mysqlmy.ini 位置在 C:\Program Files\MySQL\MySQL Server 的安装目录下,但是mysql5.7的安装目录在C:\ProgramData\MySQL\MySQL Server 5.7的目录下,mysql5.7以上的版本可能同5.7
b)将federated添加到mysqld后面。然后重启MySQL服务
c)执行show engines 命令,如果FEDERATED对应的Support值变为YES,则表示成功
mysql跨服务器访问另一个mysql服务器得访问数据(Windows版)_第2张图片

4.执行建表语句,然后就可以通过此表远程访问另一台主机上的表了

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`u_id` int(8) NOT NULL AUTO_INCREMENT,
`u_user_name` varchar(128) NOT NULL,
`u_password` varchar(128) NOT NULL,
`u_mobile` varchar(128) NOT NULL,
`u_email` varchar(128) DEFAULT NULL,
`u_create_time` datetime NOT NULL,
`u_update_time` datetime NOT NULL,
`u_delete_flag` tinyint(1) NOT NULL,
PRIMARY KEY (`u_id`)
) 
ENGINE=FEDERATED 
AUTO_INCREMENT=3 
DEFAULT CHARSET=utf8
CONNECTION='mysql://root:[email protected]:3306/user/user';

(mysql://用户名:密码@IP:port/dbName/tableName)

创建的表只能进行查询,不能删除或修改。如果远程表修改或新增,数据可以实时查看。但是大数据量关联查询广播表时,会存在性能问题

你可能感兴趣的:(mysql,服务器,数据库)