MySQL中间件Spider引擎初探

96
张伟科
2018.05.18 12:51* 字数 637

一、使用场景

1、需要做关联查询的表分布在不同的实例。这时可以安装个MariaDB,表引擎使用Spider,作为提供联表查询的中间件。

2、其它,待完善、更新……


二、中间件MariaDB安装

1、添加 MariaDB yum 仓库

#vi /etc/yum.repos.d/MariaDB.repo

[mariadb]

name = MariaDB

baseurl = http://yum.mariadb.org/10.2/centos7-amd64

gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

gpgcheck=1

2、安装 MariaDB

#yum install MariaDB-server MariaDB-client -y

3、启动数据库服务

#systemctl start mariadb

4、添加自启动服务

#systemctl enable mariadb

5、安全配置MariaDB

#mysql_secure_installation

6、修改字符集

#vi /etc/my.cnf.d/server.cnf

[mysqld]

character-set-server=utf8

#systemctl restart mariadb

7、安装Spider引擎

#mysql  < /usr/share/mysql/install_spider.sql

#mysql

MariaDB [(none)]> select * from information_schema.engines where engine='SPIDER';


三、功能验证

1、拓扑图

2、准备工作

(1)、后端DB(MySQL1 and MySQL2)对MySQL Spider中间件授权

grant all on *.* to spider@'10.8.3.245' identified by 'spider';

(2)、创建MySQL Spider中间件到后端DB的连接配置

create server db11_account foreign data wrapper mysql options(host '10.8.2.201', database 'account', user 'spider', password 'spider', port 3306);

create server db13_activity foreign data wrapper mysql options(host '10.8.2.203', database 'activity', user 'spider', password 'spider', port 3306);

3、测试跨实例联表查询

(1)、后端DB创建物理表

MySQL1建表account.test1:

mysql> create table account.test1 (  id int,  username varchar(20),  address varchar(128),  primary key (id),  key (username)  ) engine=InnoDB default charset=utf8 comment 'test1';

MySQL2建表activity.test2:

mysql> create table activity.test2 (  id int,  username2 varchar(20),  address2 varchar(128),  primary key (id),  key (username2)  ) engine=InnoDB default charset=utf8 comment 'test2';

(2)、MySQL Spider中间件创建远程后端DB表的连接定义

account.test1对应的表连接定义:

MariaDB [db11_account]> create table test1(  id int,  username varchar(20),  address varchar(128),  primary key (id),  key (username)  ) engine=spider default charset=utf8 comment 'server "db11"';

activity.test2对应的表连接定义:

MariaDB [db13_activity]> create table test2 (  id int,  username2 varchar(20),  address2 varchar(128),  primary key (id),  key (username2)  ) engine=spider default charset=utf8 comment 'server "db13"';

(3)、在后端DB插入的数据,验证在Spider中间件中是否可以查询出来

后端db11插入数据:

mysql> insert into test1 values(1,'username1','sz');

后端db13插入数据:

mysql> insert into test2 values(1,'username2','bj');

MySQL Spider中间件验证查询结果:

查询test1数据

MariaDB [db11_account]> select * from test1;

查询test2数据

MariaDB [db13_activity]> select * from test2;

联表查询数据

MariaDB [db11_account]> select * from test1 as a left join db13_activity.test2 as b on a.id=b.id;

参考资料:

https://www.jianshu.com/p/b96a8c90689a

mysql
Web note ad 1