• ShardingSphere|shardingJDBC - 在使用数据分片功能情况下无法配置读写分离


    问题场景:

            最近在学习ShardingSphere,跟着教程一步步做shardingJDBC,但是想在开启数据分片的时候还能使用读写分离,一直失败,开始是一直能读写分离,但是分偏见规则感觉不生效,一直好像是走不进去[sharding]这个配置中,后来debug调试可以找到相关配置,又感觉是什么代码给覆盖了或者不生效了。

    问题解决:

            后来找资料一直没有,看到教程下有人一直在问读写分离和数据分片没法一起使用吗?我就试了下关闭读写分离,真的就可以数据分片了,后来查资料:

    单独的读写分离配置之后,数据分片就无法生效了,是两块分开的单独功能;如果既想使用读写分离又想数据分片,可以使用如下配置,主要看sharding->master-slave-rules设置。

    1. spring:
    2. shardingsphere:
    3. props:
    4. sql:
    5. show: true # 参数配置,显示sql
    6. datasource: # 配置数据源
    7. # 给每个数据源取别名,下面的ds1,ds2,ds3任意取名字
    8. names: master,salve1
    9. # 给master-ds1每个数据源配置数据库连接信息
    10. master:
    11. # 配置druid数据源
    12. type: com.alibaba.druid.pool.DruidDataSource
    13. driver-class-name: com.mysql.cj.jdbc.Driver
    14. url: jdbc:mysql://127.0.0.1:3307/springboot?useUnicode=true&characterEncoding=utf8&tinyInt1isBit=false&useSSL=false&serverTimezone=GMT
    15. username: root
    16. password: root
    17. maxPoolSize: 100
    18. minPoolSize: 5
    19. # 配置ds2-slave
    20. salve1:
    21. type: com.alibaba.druid.pool.DruidDataSource
    22. driver-class-name: com.mysql.cj.jdbc.Driver
    23. url: jdbc:mysql://127.0.0.1:3308/springboot?useUnicode=true&characterEncoding=utf8&tinyInt1isBit=false&useSSL=false&serverTimezone=GMT
    24. username: root
    25. password: root
    26. maxPoolSize: 100
    27. minPoolSize: 5
    28. # 配置默认数据源
    29. masterslave: # 配置数据源的读写分离,但是数据库一定要做主从复制
    30. # 配置主从名称,可以任意取名字
    31. name: ms
    32. # 配置主库master,负责数据的写入
    33. master-data-source-name: master
    34. # 配置从库slave节点
    35. slave-data-source-names: salve1
    36. # 配置slave节点的负载均衡均衡策略,采用轮询机制
    37. load-balance-algorithm-type: round_robin
    38. sharding:
    39. master-slave-rules: # 在使用数据分片功能情况下,配置读写分离功能
    40. ds0: # 自定义一个虚拟数据源名字,用于自动路由下方主从数据源
    41. masterDataSourceName: master # 指定主数据源
    42. slaveDataSourceNames: # 指定从数据源
    43. - salve1
    44. loadBalanceAlgorithmType: round_robin
    45. binding-tables:
    46. - fa_user # 指明了分库分表要处理的虚拟表名字
    47. tables:
    48. # user_table 逻辑表名
    49. fa_user:
    50. # 数据节点:数据源$->{0..N}.逻辑表名$->{0..N}
    51. actualDataNodes: ds0.fa_user_$->{2022..2023}
    52. # 拆分库策略
    53. # database-strategy:
    54. # standard:
    55. # sharding-column: create_time
    56. # precise-algorithm-class-name: com.wpj.user.shardingSphere.UserDataBaseRule
    57. # 拆分表策略
    58. table-strategy:
    59. standard:
    60. sharding-column: create_time
    61. precise-algorithm-class-name: com.wpj.user.shardingSphere.UserTableRule

  • 相关阅读:
    python使用ElasticSearch7.17.6笔记
    AN基础工具——变形工具
    CANoe-vTESTstudio之Test Diagram编辑器(功能介绍)
    一键云端,AList 整合多网盘,轻松管理文件多元共享
    Excel如何给数字加双引号或者加单引号加逗号
    C++笔记之C语言中常见的文件操作函数汇总
    使用 DDPO 在 TRL 中微调 Stable Diffusion 模型
    解决`SQLyog Trial`试用到期的问题(提供一个脚本解决方案)
    2022年最新运维常用脚本学习
    如何在 Navicat 16 中仅备份数据库结构 | 数据传输
  • 原文地址:https://blog.csdn.net/wpj130/article/details/133412437