Sharding-Proxy之安装以及水平分表

Posted 爱上口袋的天空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sharding-Proxy之安装以及水平分表相关的知识,希望对你有一定的参考价值。

一、下载 Sharding-Proxy

1、下载地址

        Index of /dist/shardingsphere/5.0.0

 这里我们选择的是5.0.0的Linux安装版本

2、将sharding-proxy安装包上传到Linux服务器

 3、解压安装包

        tar -zxvf apache-shardingsphere-5.0.0-shardingsphere-proxy-bin.tar.gz

  mv apache-shardingsphere-5.0.0-shardingsphere-proxy-bin shardingsphere-proxy-5.0.0       

 


二、配置 Sharding-Proxy

1、修改 /home/dhapp/software/shardingsphere-proxy-5.0.0/conf/server.yaml 文件(此文件为Sharding-Proxy的配置),去除掉rules和props的注释

rules:
  - !AUTHORITY
    users:
      - dhapp@%:xxxxxx
      - sharding@:sharding
    provider:
      type: ALL_PRIVILEGES_PERMITTED
  - !TRANSACTION
    defaultType: XA #支持 XA 事务
    providerType: Atomikos #默认的事务管理器为 Atomikos

props:
  max-connections-size-per-query: 1
  kernel-executor-size: 16  # Infinite by default.
  proxy-frontend-flush-threshold: 128  # The default value is 128.
  proxy-opentracing-enabled: false
  proxy-hint-enabled: false
  sql-show: false
  check-table-metadata-enabled: false
  show-process-list-enabled: false
    # Proxy backend query fetch size. A larger value may increase the memory usage of ShardingSphere Proxy.
    # The default value is -1, which means set the minimum value for different JDBC drivers.
  proxy-backend-query-fetch-size: -1
  check-duplicate-table-enabled: false
  sql-comment-parse-enabled: false
  proxy-frontend-executor-size: 0 # Proxy frontend executor size. The default value is 0, which means let Netty decide.
    # Available options of proxy backend executor suitable: OLAP(default), OLTP. The OLTP option may reduce time cost of writing packets to client, but it may increase the latency of SQL execution
    # if client connections are more than proxy-frontend-netty-executor-size, especially executing slow SQL.
  proxy-backend-executor-suitable: OLAP
  proxy-frontend-max-connections: 0 # Less than or equal to 0 means no limitation.
  sql-federation-enabled: false

注意:

        上面的rules用于执行登录 Sharding Proxy 的权限验证。 配置用户名、密码、可访问的数据库后,必须使用正确的用户名、密码才可登录。

 2、修改 config-sharding.yaml 配置文件(此文件为分库分表的配置)

        2.1、将mysql的驱动jar拷贝到/home/dhapp/software/shardingsphere-proxy-5.0.0/lib/目录下,如下在config-sharding.yaml中以及提示了

 下面开始在config-sharding.yaml中配置数据源:

注意:下面我们配置了一个数据源,并且对t_user表进行水平分表

schemaName: sharding_db #逻辑库名称

dataSources:
  ds_0:
    url: jdbc:mysql://192.168.56.20:3306/course_db?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: Tz@202011
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1

rules:
- !SHARDING
  tables:
    t_user:
      actualDataNodes: ds_$0.t_user_$0..1
      tableStrategy:
        standard:
          shardingColumn: user_id #定义分表的字段
          shardingAlgorithmName: t_user_inline
      keyGenerateStrategy:
        column: user_id #定义主键生成的算法策略
        keyGeneratorName: snowflake
  bindingTables:
    - t_user
  defaultDatabaseStrategy:
    standard:
      shardingColumn: user_id
      shardingAlgorithmName: database_inline  
  defaultTableStrategy:
    none:

  shardingAlgorithms:
    database_inline:
      type: INLINE
      props:
        algorithm-expression: ds_$0
    t_user_inline:
      type: INLINE
      props:
        algorithm-expression: t_user_$user_id % 2

  keyGenerators:
    snowflake:
      type: snowflake

三、启动 Sharding-Proxy 服务

1、进入/home/dhapp/software/shardingsphere-proxy-5.0.0/bin/目录下启动sharding-proxy

        sh ./start.sh

 2、连接sharding-proxy

        注意:空格然后加上端口号,可以指定端口,默认3307,例如:sh ./start.sh 3308

        mysql -h192.168.56.20 -udhapp -P3307 -p

 

四、上面标示连接成功,下面进行测试

1、新建一张表,并插入一条数据

use sharding_db;

create table t_user(
	`user_id` bigint(20) primary key,
	`username` varchar(100) not null,
	`ustatus` varchar(50) not null
);

insert into t_user(`user_id`,`username`,`ustatus`)values(11,'张三','test');

查看数据库:

 

 可以发现在mysql中自动创建了t_user_0和t_user_1两张表

我们是根据user_id分表,11应该分在t_user_1表中,我们看一下:

 

由上可以发现,完全正确,没问题! 

以上是关于Sharding-Proxy之安装以及水平分表的主要内容,如果未能解决你的问题,请参考以下文章

windows下mysql 使用sharding-proxy5.1.1sharding-scaling4.1.1zookeeper3.6.4进行水平分表数据迁移

sharding-proxy代理分库分表配置

MySQL数据库之安装

来吧!推荐一个数据库分库分表神器!

MySQL数据库之安装

面试官: ShardingSphere 学一下吧