ShardingSphere-Proxy入门-安装到使用

文章目录

  • 一、安装
    • docker安装
    • 设置驱动
    • 修改配置文件
    • 重启容器
    • 实时查看日志
    • 客户端登录
  • 二、使用
    • 垂直分片
    • 水平分片

一、安装

docker安装

docker run -d \
-v /opt/shardingsphere-proxy/server/proxy/conf:/opt/shardingsphere-proxy/conf \
-v /opt/shardingsphere-proxy/server/proxy/ext-lib:/opt/shardingsphere-proxy/ext-lib \
-v /opt/shardingsphere-proxy/server/proxy/logs:/opt/shardingsphere-proxy/logs \
-e ES_JAVA_OPTS="-Xmx256m -Xms256m -Xmn128m" \
-p 3321:3307 \
--name server-proxy \
apache/shardingsphere-proxy:5.1.1

说明:

  1. -v路径映射,宿主机路径(自定义):容器路径(不能改)。
  2. conf文件夹是配置文件位置,所有的配置文件都放到这个位置。
  3. ext-lib文件夹是扩展包,用来放数据库连接驱动使用。
  4. logs文件夹是用来查看日志的。
  5. -e配置环境变量用,用来设置JVM参数。
  6. -p 端口映射 宿主机端口 :容器端口。

设置驱动

根据实际数据库将需要的驱动放到对应的路径下(ext-lib)
image.png
官网说明:
image.png

修改配置文件

修改conf/server.yaml

rules:
  - !AUTHORITY
# 客户端连接的用户名密码,@%的意思是不限制连接IP
    users:
      - root@%:root
    provider:
			# 所有权限
      type: ALL_PRIVILEGES_PERMITTED

props:
	# sql是否显示
  sql-show: true

重启容器

docker restart  server-proxy

实时查看日志

# 第一种方式,通过docker容器查看
docker exec -it server-proxy env LANG=C.UTF-8 /bin/bash
tail -f /opt/shardingsphere-proxy/logs/stdout.log 

# 第二种方式,通过映射出来的文件夹查看 
打开映射的日志文件夹即可:/opt/shardingsphere-proxy/logs/stdout.log 

客户端登录

# -h 指定sharding-proxy安装的服务器IP
# -P 指定sharding-proxy安装的端口
# -u 指定sharding-proxy配置文件指定的用户名
# -p 指定sharding-proxy配置文件指定的用户密码

mysql -h 192.168.1.102 -P 3321 -u root -p

ShardingSphere-Proxy入门-安装到使用_第1张图片
显示上面的结果就是连接成功。

二、使用

垂直分片

修改配置文件config-sharding.yaml并上传到conf下并重启服务

# 对应sharding-proxy映射出来的数据库名称
schemaName: sharding_test

dataSources:
  ds_0:
    url: jdbc:mysql://192.168.1.102:3306/db_1?serverTimezone=UTC&useSSL=false
    username: root
    password: 123456
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1
  ds_1:
    url: jdbc:mysql://192.168.1.102:3306/db_2?serverTimezone=UTC&useSSL=false
    username: root
    password: 123456
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1

rules:
- !SHARDING
  tables:
    t_user:
      actualDataNodes: ds_0.t_user
    t_school:
      actualDataNodes: ds_1.t_school
select * from t_user;

ShardingSphere-Proxy入门-安装到使用_第2张图片

select * from t_order; 

ShardingSphere-Proxy入门-安装到使用_第3张图片

从上面的结果可以不同的表分不到了不同的数据库,实现了垂直分片。

水平分片

修改配置文件config-sharding.yaml并上传到conf目录下:

schemaName: sharding_test

dataSources:
  ds_user:
    url: jdbc:mysql://192.168.1.102:3306/db_1?serverTimezone=UTC&useSSL=false
    username: root
    password: 123456
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1
  ds_school0:
    url: jdbc:mysql://192.168.1.102:3306/db_1?serverTimezone=UTC&useSSL=false
    username: root
    password: 123456
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1
  ds_school1:
    url: jdbc:mysql://192.168.1.102:3306/db_2?serverTimezone=UTC&useSSL=false
    username: root
    password: 123456
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
    minPoolSize: 1

rules:
- !SHARDING
  tables:
    t_user:
      actualDataNodes: ds_user.t_user
    t_school:
      actualDataNodes: ds_school${0..1}.t_school${0..1}
      databaseStrategy:
        standard:
          shardingColumn: id
          shardingAlgorithmName: alg_hash_mod
      tableStrategy:
        standard:
          shardingColumn: id
          shardingAlgorithmName: alg_hash_mod

  shardingAlgorithms: 
    alg_hash_mod:
      type: HASH_MOD
      props:
        sharding-count: 2 

测试,分别插入不同的ID数据,查看数据分布:
ShardingSphere-Proxy入门-安装到使用_第4张图片
偶数数取模入到db_1库的表中
ShardingSphere-Proxy入门-安装到使用_第5张图片
奇数取模入到db_2库的表中
ShardingSphere-Proxy入门-安装到使用_第6张图片

你可能感兴趣的:(Java,java,数据库)