使用手册

Proxy启动

  1. 下载Sharding-Proxy的最新发行版。
  2. 如果使用docker,可以执行docker pull shardingsphere/sharding-proxy获取镜像。详细信息请参考Docker镜像
  3. 解压缩后修改conf/server.yaml和以config-前缀开头的文件,如:conf/config-xxx.yaml文件,进行分片规则、读写分离规则配置. 配置方式请参考配置手册
  4. Linux操作系统请运行bin/start.sh,Windows操作系统请运行bin/start.bat启动Sharding-Proxy。如需配置启动端口、配置文件位置,可参考快速入门 进行启动。
  5. 使用任何PostgreSQL的客户端连接。如: psql -U root -h 127.0.0.1 -p 3307

注册中心使用

若想使用Sharding-Proxy的数据库治理功能,则需要使用注册中心实现实例熔断和从库禁用功能。详情请参考支持的注册中心

Zookeeper

  1. Sharding-Proxy默认提供了Zookeeper的注册中心解决方案。您只需按照配置规则进行注册中心的配置,即可使用。

其他第三方注册中心

  1. 将Sharding-Proxy的lib目录下的sharding-orchestration-reg-zookeeper-curator-${sharding-sphere.version}.jar文件删除。
  2. 使用SPI方式实现相关逻辑编码,并将生成的jar包放到Sharding-Proxy的lib目录下。
  3. 按照配置规则进行注册中心的配置,即可使用。

使用自定义分片算法

当用户需要使用自定义的分片算法类时,无法再通过简单的inline表达式在yaml文件进行配置。可通过以下方式配置使用自定义分片算法。

  1. 实现ShardingAlgorithm接口定义的算法实现类。
  2. 将上述java文件打包成jar包。
  3. 将上述jar包拷贝至ShardingProxy解压后的conf/lib目录下。
  4. 将上述自定义算法实现类的java文件引用配置在yaml文件里tableRule的algorithmClassName属性上,具体可参考配置规则

分布式事务

Sharding-Proxy接入的分布式事务API同Sharding-JDBC保持一致,支持LOCAL,XA,BASE类型的事务。

XA事务

Sharding-Proxy原生支持XA事务,默认的事务管理器为Atomikos。 可以通过在Sharding-Proxy的conf目录中添加jta.properties来定制化Atomikos配置项。 具体的配置规则请参考Atomikos的官方文档

BASE事务

BASE目前没有打包到Sharding-Proxy中,使用时需要将实现了ShardingTransactionManagerSPI的jar拷贝至conf/lib目录,然后切换事务类型为BASE。

SCTL (Sharding-Proxy control language)

SCTL为Sharding-Proxy特有的控制语句,可以在运行时修改和查询Sharding-Proxy的状态,目前支持的语法为:

语句 说明
sctl:set transaction_type=XX 修改当前TCP连接的事务类型, 支持LOCAL,XA,BASE。例:sctl:set transaction_type=XA
sctl:show transaction_type 查询当前TCP连接的事务类型
sctl:show cached_connections 查询当前TCP连接中缓存的物理数据库连接个数
sctl:explain SQL语句 查看逻辑SQL的执行计划,例:sctl:explain select * from t_order;
sctl:hint set MASTER_ONLY=true 针对当前TCP连接,是否将数据库操作强制路由到主库
sctl:hint set DatabaseShardingValue=yy 针对当前TCP连接,设置hint仅对数据库分片有效,并添加分片值,yy:数据库分片值
sctl:hint addDatabaseShardingValue xx=yy 针对当前TCP连接,为表xx添加分片值yy,xx:逻辑表名称,yy:数据库分片值
sctl:hint addTableShardingValue xx=yy 针对当前TCP连接,为表xx添加分片值yy,xx:逻辑表名称,yy:表分片值
sctl:hint clear 针对当前TCP连接,清除hint所有设置
sctl:hint show status 针对当前TCP连接,查询hint状态,master_only:true/false,sharding_type:databases_only/databases_tables
sctl:hint show table status 针对当前TCP连接,查询逻辑表的hint分片值

Sharding-Proxy 默认不支持hint,如需支持,请在conf/server.yaml中,将props的属性proxy.hint.enabled设置为true。在Sharding-Proxy中,HintShardingAlgorithm的泛型只能是String类型。

注意事项

  1. Sharding-Proxy默认使用3307端口,可以通过启动脚本追加参数作为启动端口号。如: bin/start.sh 3308
  2. Sharding-Proxy使用conf/server.yaml配置注册中心、认证信息以及公用属性。
  3. Sharding-Proxy支持多逻辑数据源,每个以config-前缀命名的yaml配置文件,即为一个逻辑数据源。