设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 数据 公司
当前位置: 首页 > 服务器 > 安全 > 正文

用Spider引擎解决数据库垂直和水平拆分的问题(2)

发布时间:2021-01-24 09:29 所属栏目:53 来源:网络整理
导读:水平分表场景解析 Spider支持多种水平分表的模式,目前支持hash分表(hash)、范围分表(range)、列表分表(list),我这里用range来说明水平分表的工作原理. 从上图中可以看出Spider对user_info表针对id进行了分区,将0~10

用Spider引擎解决数据库垂直和水平拆分的问题

  • 水平分表场景解析

Spider支持多种水平分表的模式,目前支持hash分表(hash)、范围分表(range)、列表分表(list),我这里用range来说明水平分表的工作原理.

从上图中可以看出Spider对user_info表针对id进行了分区,将0~100000的记录存储在了HostA,100000~200000的记录存储在了HostB,200000~300000的记录存储在了HostC,300000~400000的记录存储在了HostD.当用户访问user_info的某条或者多条记录的时候,Spider会根据分区的情况,对相关的记录落在某台或者多台DB server上,再进行转发.比如select * from user_info where id=1这个SQL,spider在收到这个请求后,会跟进分区情况选择对应的DB server进行转发.这里会将该请求转发到HostA中.HostA处理完成后,再将结果返回给Spider server,Spider再将结果转发给发起请求的客户端.

三、Spider引擎实战

1、Spider的安装部署

从Spider 10.0.0.4版本开始,Spider引擎就集成到了MariaDB中,集成后安装就非常的简单,安装步骤如下:

  • 安装MariaDB到Spider Server以及后端多台DB Server上;

安装方法非常简单,这里不在赘述,具体可以参考:https://mariadb.com/kb/en/mariadb/getting-installing-and-upgrading-mariadb/

  • 安装Spider引擎到Spider Server上(后端的DB Sserver不需要安装Spider引擎)

mysql -uroot -p < install_spider.sql

或者登录MySQL后执行

source /path/install_spider.sql

备注:install_spider.sql在share目录下面.

这个命令所做的事情如下:

创建Spider相关的系统表

spider_link_failed_log

spider_link_mon_servers

spider_tables

spider_xa

spider_xa_failed_log

spider_xa_member

创建Spider相关的表结构

加载Spider引擎

  • 检查Spider引擎是否安装成功

用Spider引擎解决数据库垂直和水平拆分的问题

如果出现上图所示的结果就说明已经支持Spider引擎了.

2、Spider的使用实战

备注:本实践环境基于tspider-1.8.5环境全部验证通过.

  • Spider实战拓扑图

在实战部分,我使用了2台DB Server,部署图如下:

水平分

  • 实战前准备

a、创建Spider Server访问后端DB Server的权限(后面配置中需要用到)

grant all on *.* tospider_db_all@’10.128.128.91′ identified by ‘tospider_db_all’;

b、创建Spider后端DB Server的配置

可以通过执行如下SQL的形式直接创建

create server backend1 foreign data wrapper mysql options (host ‘10.128.128.60’,database ‘test’,user ‘spider_db_all’,password ‘spider_db_all’,port 3306);

create server backend2 foreign data wrapper mysql options (host ‘10.128.128.88’,port 3306);

也可以通过直接给mysql.servers表中直接插入相关的记录,不过后面执行flush hosts才能生效

insert into mysql.servers(Server_name,Host,Db,Username,Password,Port,Socket,Wrapper,Owner)values (‘backend1′,’10.128.128.60′,’test’,’spider_db_all’,3306,”,’mysql’,”);

insert into mysql.servers(Server_name,Owner)values (‘backend2′,’10.128.128.88′,”);

创建完成后可以直接查询mysql.servers表,确认是否添加成功,如下截图所示:

mysql.servers

b、创建基础测试表

在后端两台DB Server上创建基础测试表(在60和88上执行)

create table test_spider (

id int,

username varchar(20),

address varchar(128),

primary key (id),

key (username)

) engine=InnoDB default charset=utf8 comment ‘spider test base table’;

  • Spider引擎实战

a、建立垂直表(远程表进行测试)

create table test_spider (

id int,

key (username)

) ENGINE=SPIDER DEFAULT CHARSET=utf8 COMMENT=’server “backend1″‘;

创建之后,执行对应增删改查,看看是否对应的操作都发生在了backend1对应的DB Server上?

测试完成后,删除掉Spider 服务器上的test_spider表,你会发现drop掉Spider上的表,不会导致后端DB Server上的表被删除.

b、建立hash分区表

create table test_spider (

id int,

key (username)

) ENGINE=SPIDER DEFAULT CHARSET=utf8 COMMENT=’wrapper “mysql”,table “test_spider”‘

PARTITION BY HASH (id)

( PARTITION pt1 COMMENT = ‘srv “backend1″‘,

PARTITION pt2 COMMENT = ‘srv “backend2″‘) ;

创建之后,看看是否对应的操作都发生在了backend1和backend2对应的DB Server上?

测试完成后,不会导致后端DB Server上的表被删除.

c、建立range分区表

create table test_spider (

id int,table “test_spider”‘

PARTITION BY range columns (id)

( PARTITION pt1 values less than (100000) COMMENT = ‘srv “backend1″‘,

PARTITION pt2 values less than (200000) COMMENT = ‘srv “backend2″‘) ;

创建之后,不会导致后端DB Server上的表被删除.

d、建立list分区表测试

create table test_spider (

id int,table “test_spider”‘

PARTITION BY list columns (id)

( PARTITION pt1 values in (1,3,5,7,9) COMMENT = ‘srv “backend1″‘,

PARTITION pt2 values in (2,4,6,8,10) COMMENT = ‘srv “backend2″‘) ;

创建之后,不会导致后端DB Server上的表被删除.

四、性能测试

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读