7、ShardingSphere 之 Sharding-Proxy

    技术2026-09-22  3

    文章目录

    简介1 进入conf目录,修改server.yaml2 进入conf目录,修改config-sharding.yaml2.1 拷贝mysql驱动到Sharding-Proxy的lib目录2.2 修改 config-sharding.yaml 文件2.3 本地创建一个数据库 3 启动Sharding-Proxy服务4 通过Sharding-Proxy启动端口进行连接4.1 打开Navicat for Mysql 15 连接sharding-proxy4.2 进行sql命令操作看到只有一个库4.3 在sharding_db库中创建表4.4 向表中添加一条记录 5 回到本地3306端口数据库中,看到已经创建好了表和添加了数据

    简介

    定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前先提供MySQL/PostgreSQL版本,它可以使用任何兼容MySQL/PostgreSQL协议的访问客户端(如:MySQL Command Client, MySQL Workbench, Navicat等)操作数据,对DBA更加友好。 向应用程序完全透明,可直接当做MySQL/PostgreSQL使用。 适用于任何兼容MySQL/PostgreSQL协议的的客户端。

    1 进入conf目录,修改server.yaml

    authentication: users: root: password: root sharding: password: sharding authorizedSchemas: sharding_db props: max.connections.size.per.query: 1 acceptor.size: 16 # The default value is available processors count * 2. executor.size: 16 # Infinite by default. proxy.frontend.flush.threshold: 128 # The default value is 128. # LOCAL: Proxy will run with LOCAL transaction. # XA: Proxy will run with XA transaction. # BASE: Proxy will run with B.A.S.E transaction. proxy.transaction.type: LOCAL proxy.opentracing.enabled: false query.with.cipher.column: true sql.show: false

    2 进入conf目录,修改config-sharding.yaml

    2.1 拷贝mysql驱动到Sharding-Proxy的lib目录

    将mysql 驱动 mysql-connector-java-8.0.15.jar 复制到Sharding-Proxy的lib目录中

    2.2 修改 config-sharding.yaml 文件

    schemaName: sharding_db dataSources: ds_0: url: jdbc:mysql://127.0.0.1:3306/edu1?serverTimezone=UTC&useSSL=false username: root password: chengwen connectionTimeoutMilliseconds: 30000 idleTimeoutMilliseconds: 60000 maxLifetimeMilliseconds: 1800000 maxPoolSize: 50 shardingRule: tables: t_order: actualDataNodes: ds_${0}.t_order_${0..1} tableStrategy: inline: shardingColumn: order_id algorithmExpression: t_order_${order_id % 2} keyGenerator: type: SNOWFLAKE column: order_id bindingTables: - t_order defaultDatabaseStrategy: inline: shardingColumn: user_id algorithmExpression: ds_${0} defaultTableStrategy: none:

    2.3 本地创建一个数据库

    CREATE SCHEMA `edu1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ;

    3 启动Sharding-Proxy服务

    进入bin目录,执行命令启动Sharding-Proxy

    chengwen@chengwen bin % ./start.sh Starting the Sharding-Proxy ... Please check the STDOUT file: /Users/chengwen/apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin/logs/stdout.log chengwen@chengwen bin %

    查看日志,出现端口号3307(默认),ACTIVE表示成功

    [INFO ] 00:27:18.350 [nioEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0x7014d160] REGISTERED [INFO ] 00:27:18.352 [nioEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0x7014d160] BIND: 0.0.0.0/0.0.0.0:3307 [INFO ] 00:27:18.355 [nioEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0x7014d160, L:/0.0.0.0:3307] ACTIVE

    4 通过Sharding-Proxy启动端口进行连接

    4.1 打开Navicat for Mysql 15 连接sharding-proxy

    4.2 进行sql命令操作看到只有一个库

    4.3 在sharding_db库中创建表

    create table if not exists ds_0.t_order( order_id bigint not null, user_id int not null, status varchar(50), primary key(order_id) );

    4.4 向表中添加一条记录

    USE sharding_db; show tables; select * from t_order; insert into t_order(order_id,user_id,status) values (11,1,'init'); select * from t_order;

    5 回到本地3306端口数据库中,看到已经创建好了表和添加了数据

    本地库edu1需要自己创建,数据表和数据记录会由sharding-proxy自动创建

    Processed: 0.008, SQL: 9