首页 > 数据库 >ShardingSphere5.0.0-Sharding-proxy MySql 读写分离

ShardingSphere5.0.0-Sharding-proxy MySql 读写分离

时间:2023-03-20 11:47:08浏览次数:46  
标签:false 配置文件 ShardingSphere5.0 proxy Proxy MySql MySQL size

一、关于

二、准备

需要准备两个已开启主从复制的MySQL 数据库,如果还没有准备的话可以根据下面这个文章进行部署

MYSQL一个设备上的主从复制实现-windows

三、配置

1、MySQL 驱动jar 包文件

下载解压后,需要找寻一个MySQL 驱动jar 包文件,放到lib 文件夹内,我用的是mysql-connector-java-5.1.26-bin.jar

下载:mysql-connector-java-5.1.26-bin.jar

找到Conf文件夹,读写分离配置需要配置以下两个配置文件。

  • server.yaml
  • config-readwrite-splitting.yaml

2、server.yaml 配置文件

ShardingSphere-Proxy 因为是一个代理端,所以可以把Proxy 看做一个伪装的MySQL 数据库,只不过Proxy 内部根据配置整合里后端各个数据库。

此配置文件主要是用来配置ShardingSphere 的基本设置,也可以理解为数据库的一些配置。

在 server.yaml 配置文件下方追加以下配置:

rules:
  - !AUTHORITY
    users:
      - root@%:MEIQU@uss20211!  # 启动该服务的用户密码
#      - sharding@:123456 # 启动该服务的用户密码
    provider:
#      type: NATIVE
      type: ALL_PRIVILEGES_PERMITTED
  - !TRANSACTION
    defaultType: XA
    providerType: Atomikos

props:
  max-connections-size-per-query: 1 # 一次查询请求在每个数据库实例中所能使用的最大连接数。
  kernel-executor-size: 16 # 线程池大小  默认值: CPU核数
  kernel-acceptor-size: 16  # 用于设置接收客户端请求的工作线程个数,默认为CPU核数*2
  proxy-frontend-flush-threshold: 128  # 设置传输数据条数的 IO 刷新阈值
  proxy-opentracing-enabled: false #是否开启链路追踪功能,默认为不开启
  proxy-hint-enabled: false #是否启用hint算法强制路由 默认false
  sql-show: ture #是否打印sql 默认falsefalse
#  show-process-list-enabled: false
    # Proxy backend query fetch size. A larger value may increase the memory usage of ShardingSphere Proxy.
    # The default value is -1, which means set the minimum value for different JDBC drivers.
  proxy-backend-query-fetch-size: -1
  check-duplicate-table-enabled: false
  sql-comment-parse-enabled: false
  proxy-frontend-executor-size: 0 # Proxy frontend executor size. The default value is 0, which means let Netty decide.
    # Available options of proxy backend executor suitable: OLAP(default), OLTP. The OLTP option may reduce time cost of writing packets to client, but it may increase the latency of SQL execution
    # if client connections are more than proxy-frontend-netty-executor-size, especially executing slow SQL.
  proxy-backend-executor-suitable: OLAP
#  proxy-frontend-max-connections: 0 # Less than or equal to 0 means no limitation.
#  sql-federation-enabled: false

部分字段解释(其他信息可以参考官方文档):

users 里面配置的相当于是对外的用户和密码,可以认为是Sharding-Proxy这个伪装数据库的用户和密码
root 可以想象成MySQL 数据库的root用户
sharding 可以想象成MySQL 数据库的其他用户,可用可不用
type 权限类型,NATIVE 仅限本地,ALL_PRIVILEGES_PERMITTED 所有权限
defaultType 事务类型,XA XA柔性事务

3、config-readwrite-splitting.yaml 配置文件

在这个配置文件里配置读写分离策略,再次配置文件下方追加以下配置:

schemaName: test
# 逻辑库,相当于独立主机与从机的一个中间库,搭起该服务后就要使用该逻辑库
# 注意修改已经配置好一个逻辑库并启动了,再修改这个逻辑库时就得先暂停该服务再启动。

dataSources:
  master01:
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false
    username: root
    password: 123456
    connectionTimeoutMilliseconds: 30000  # 连接超时时间
    idleTimeoutMilliseconds: 60000  # 空闲连接回收超时毫秒数
    maxLifetimeMilliseconds: 1800000  # 连接最大存活时间毫秒数
    maxPoolSize: 500  # 最大连接数
    minPoolSize: 10  # 最小连接数 
  slave01:
    url: jdbc:mysql://localhost:3308/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false
    username: root
    password: 123456
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 500
    minPoolSize: 10

rules:
- !READWRITE_SPLITTING
  dataSources:
    pr_ds:
      writeDataSourceName: master01 # 只用来操作写的库,这里配置主从复制的主库
      readDataSourceNames:
        - slave01 # 只用操作度的库,这里配置主从复制的从库

4、启动

在bin 文件夹启动命令行窗口,并执行 start.bat,进行运行,待命令行窗口显示 ShardingSphere-Proxy start success,启动成功。

Sharding-Proxy 启动后默认端口为3307,如果需要修改,直接修改start.bat 文件里的3307即可。

启动后可以当做MySQL 进行原生连接,或使用Navicat 进行连接。

 

 

 

翻译

搜索

复制

<iframe height="240" width="320"></iframe>

标签:false,配置文件,ShardingSphere5.0,proxy,Proxy,MySql,MySQL,size
From: https://www.cnblogs.com/xxhxs-21/p/17235768.html

相关文章

  • mysql datetime is null
    mysql中时间字段datetime怎么判断为空和不为空一般为空都用null表示,所以一句sql语句就可以。select*from表名where日期字段isnull;这里要注意null的用法,不可以用=nu......
  • mysqldump + binlog实现增量备份
    1、核心思路搞明白一件事:到底什么是增量备份?答:①要有全量备份②继续增删改数据③再次需要备份时,不需要进行全量备份,只需要备份binlog日志文件即可(因为binlog日志记录了......
  • mysql5.6以下排序
    SELECTtt.id,(@rowNum:=@rowNum+1)ASrankingFROM(select5asidunionallselect4asidunionallselect3asidunionallselect2asidunionall......
  • MySQL5种索引类型
    MySQL的类型主要有五种:主键索引、唯一索引、普通索引、空间索引、全文索引有表:CREATETABLE`t1`(`id`bigintunsignedNOTNULLAUTO_INCREMENT,`u1`intunsignedNOT......
  • apple M1 python开发,django,安装mysqlclient并使用
    前言此笔记记录了MBPM1芯片的苹果本,解决mysqlclient虽然安装成功,但是会遇到_namenotdefound的解决办法解决过程内容参考:https://github.com/PyMySQL/mysqlclient/iss......
  • mysql 索引(InnoDB)
    mysql创建索引地址:https://dev.mysql.com/doc/refman/8.0/en/create-index.html概述:什么是索引:在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进......
  • 你能说出MySQL主从复制的几种复制方式吗?
    异步复制多线程复制增强半同步复制异步复制MySQL的复制默认是异步的,主从复制至少需要两个MySQL服务,这些MySQL服务可以分布在不同的服务器上,也可以在同一台服务......
  • mysql-批量替换字符串(replace)
    问题概述批量替换mysql一个表中某个字段的值里面的部分字符串,使用mysqlreplace函数问题解决01、备份表CREATETABLExt_mbfwpz_bak_sjbASSELECT*FROMxt_mbfwpz;......
  • mysql-datadir权限被修改导致权限异常
    概述同事反馈引用连接mysql提示权限不足(Errcode:13Permissiondenied)查看mysql进程&&修改权限//psaux|grepmysql[root@~]#psuax|grepmysqlroot1......
  • mysql
    MySQL如何一行数据统计多个COUNTSELECTcount(CASEWHEN字段=‘值’THEN1end)as‘A’,count(CASEWHEN字段=‘值’THEN1end)‘B’,count(CASEWHEN字段=......