ShardingSphere-Proxy入门-安装到使用

一、安装

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


显示上面的结果就是连接成功。

二、使用

垂直分片

修改配置文件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;

image.png

select * from t_order; 

image.png

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

水平分片

修改配置文件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数据,查看数据分布:
image.png
偶数数取模入到db_1库的表中
image.png
奇数取模入到db_2库的表中
image.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

4935同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值