一、使用场景
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';
![](https://img.haomeiwen.com/i9565093/d6ffe9d9115c7690.png)
三、功能验证
1、拓扑图
![](https://img.haomeiwen.com/i9565093/3f04f32ff3369546.png)
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);
![](https://img.haomeiwen.com/i9565093/8558f715428dc4df.png)
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;
![](https://img.haomeiwen.com/i9565093/2412625b0ca9ef4c.png)
查询test2数据
MariaDB [db13_activity]> select * from test2;
![](https://img.haomeiwen.com/i9565093/f74cb8288071a044.png)
联表查询数据
MariaDB [db11_account]> select * from test1 as a left join db13_activity.test2 as b on a.id=b.id;
![](https://img.haomeiwen.com/i9565093/633f0179630e5953.png)
参考资料:
https://www.jianshu.com/p/b96a8c90689a
网友评论