ShardingSphere-Proxy 主从读写 入门使用

本文档介绍了如何使用ShardingSphere-Proxy实现MySQL的主从读写分离。首先,详细阐述了环境准备,包括MySQL的主从配置。接着,详细讲解了ShardingSphere-Proxy的配置步骤,如下载、放置MySQL-connect.jar和编写配置文件。在运行Sharding-Proxy后,通过MySQL Workbench和Java JDBC成功进行了连接测试,验证了主从读写分离功能的正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ShardingSphere-Proxy 主从读写 入门使用


基于ShardingSphere5.0.0Alpha

环境准备

MySQL搭建

    准备MySQL

配置ShardingSphere-Proxy

    这里使用5.0.0版本的

  • 1.下载ShardingSphere-Proxy

  • 2.下载完成后解压放到自己的目录下,比如我这里是放到:D:/temp/ssp

  • 3.下载MySQL-connect.jar

  • 4.将MySQL-connect.jar,放到ShardingSphere-Proxy根目录的lib下,比如我这里是:D:/temp/ssp/lib/

  • 5.写入配置文件,里面本身就有配置文件,这里需要写入的有两份,如果之前存在的就直接替换:server.xml和config-master_slave.yaml

    server.xml 这份感觉不用改,如果和下面的一样就不用改

######################################################################################################
#
# If you want to configure orchestration, authorization and proxy properties, please refer to this file.
#
######################################################################################################

# orchestration:
#  name: orchestration_ds
#  overwrite: true
#  registry:
#    type: zookeeper
#    serverLists: localhost:2181
#    namespace: orchestration

authentication:
  users:
    root:
      password: root
    sharding:
      password: sharding
      authorizedSchemas: test

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

    config-master_slave.yaml,这个文件的配置关键字一定不要安装官方example的那个来,完全不行,要按照官方文档来,比如JDBCURL需要改成url,大致的文件内容如下:

######################################################################################################
# 
# Here you can configure the rules for the proxy.
# This example is configuration of master-slave rule.
#   
# If you want to use master-slave, please refer to this file; 
# if you want to use sharding, please refer to the config-sharding.yaml.
# 
######################################################################################################

schemaName: test

dataSources:
  master_ds:
    url: jdbc:mysql:/
### 配置 Go 语言客户端连接 ShardingSphere-Proxy 为了使 Go 语言程序能够通过 ShardingSphere-Proxy 连接到数据库,需要完成以下几个方面的配置: #### 1. 安装并启动 ShardingSphere-Proxy 按照提供的 Docker Compose 文件[^1],可以快速部署 ShardingSphere-Proxy 实例。确保容器正常运行,并监听指定端口(如 `3310`)。以下是完整的 Docker Compose 文件内容: ```yaml version: '3' services: sharding-proxy: image: apache/shardingsphere-proxy:5.1.1 container_name: sharding-proxy ports: - "3310:3307" volumes: - /home/service/sharding-proxy/conf:/opt/shardingsphere-proxy/conf - /home/service/sharding-proxy/ext-lib:/opt/shardingsphere-proxy/ext-lib environment: - ES_JAVA_OPTS="-Xmx256m -Xms256m -Xmn128m" ``` #### 2. 添加 MySQL Connector JAR 到 Proxy 的 lib 目录 根据引用说明[^2],需将 MySQL 的 JDBC 驱动包放置到 ShardingSphere-Proxy 的扩展库路径下。如果使用的是本地环境,则将其复制至 `/ext-lib` 路径;如果是基于 Docker 的部署方式,则可以通过挂载卷的方式实现。 #### 3. 使用 Go 数据库驱动连接 ShardingSphere-Proxy 在 Go 中,推荐使用标准的 MySQL 驱动程序来建立与 ShardingSphere-Proxy 的连接。以下是一个简单的示例代码片段,展示如何创建一个基本的数据库会话: ```go package main import ( "database/sql" "fmt" "log" _ "github.com/go-sql-driver/mysql" ) func main() { dsn := "username:password@tcp(localhost:3310)/your_database?parseTime=true&charset=utf8mb4" db, err := sql.Open("mysql", dsn) if err != nil { log.Fatalf("Error opening connection to database: %v", err) } defer db.Close() err = db.Ping() if err != nil { log.Fatalf("Cannot connect to the database: %v", err) } fmt.Println("Successfully connected!") } ``` 上述代码中的 DSN 参数应替换为实际使用的用户名、密码以及目标数据库名称。注意,默认情况下 ShardingSphere-Proxy 将其服务绑定到了自定义端口号(此处为 `3310`),因此需要调整 TCP 地址部分以匹配该端口。 #### 4. 配置主从读写分离支持 对于希望启用主从架构下的读写分离功能的应用场景而言,在 YAML 格式的规则文件中定义相应的数据源和策略即可满足需求。具体操作可参照官方文档关于 **ShardingSphere-Proxy 主从读写入门指南** 的相关内容。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值