最简单的跨库连表的方法(附Windows重启mysql服务命令)

背景

现在一般使用的数据库都是mysql,微服务架构中, 分库分表是标配, 不同的数据源可能部署在不同的服务器, 联合查询就需要跨库连表查询, 常见做法:

1表冗余, 这样需要维护表的数据, 同步数据.相当于多存一份数据

2查单表, 然后组装, 这样需要的开发量大, 并且分页查询很不好处理

如果你用的是MySQL数据库, 那么有一种更快捷省时省力的方式, 就是:

给远程表创建一个快捷方式.同于方法1的区别是, 这里只是引用, 而不需要复制一份数据.

开启mysql 表的快捷方式:

1 开启你的FEDERATED引擎

查询你的使用的mysql数据库的FEDERATED引擎有没有开启。

SHOWENGINES;

这是我见过的最简单的跨库连表的方法,微服务连表再也不麻烦了

如果没有开启, 则修改一下mysql数据库的配置文件

windows修改 my.ini文件 Linux修改my.cnf文件

在配置文件末尾加上 federated

2 重启msyql 服务器

windows重启mysql服务命令

netstop mysql netstart mysql

linux重启mysql服务命令

servicemysqld restart

3 快捷表的创建

远程源表

这是我见过的最简单的跨库连表的方法,微服务连表再也不麻烦了

本地快捷表

CREATETABLE`barang`( `id_barang`INT(255) NOTNULL, `id_kategori`INT(255) NULLDEFAULTNULL, `nama_barang`VARCHAR(255) NULLDEFAULTNULLCOLLATE’latin1_swedish_ci’, `harga`INT(255) NULLDEFAULTNULL, `stok`INT(255) NULLDEFAULTNULL, PRIMARY KEY(`id_barang`) USINGBTREE )ENGINE=FEDERATED CONNECTION=’mysql://username:pwd@192.168.117.66:3306/tets/test;

说明: 这里和普通建表语句的区别在于: ENGINE 的写法

查询

查询时,就可以像本地查询一样. 可以看见本地的数据将远程的数据也引用过来了

这是我见过的最简单的跨库连表的方法,微服务连表再也不麻烦了

跨服务器的跨库查询特点:

1.该跨库查询方式不支持事务,所有涉及到事务的操作,不要用这种方式。

2.不能修改表的结构, 只是查询使用。

3.MySQL使用这种跨库查询方式,远程数据库目前仅支持MySQL,其他数据库不支持。

4.表结构必须和目标数据库表完全一致。

写在最后

掌握了这种方法后, 以后可以查询远程表像在本地查询一样. 跨库查询再也不会头疼了. 希望对大家有所帮助,如果你有更好的方式,欢迎大家评论, 交流.

(0)
季候的头像季候注册用户

相关推荐

发表回复

登录后才能评论