Sharding-Proxy分库分表的实现方案

 更新时间:2025年08月07日 10:12:04   作者:jaki615  
本文主要介绍了Sharding-Proxy分库分表的实现方案,包括配置文件修改和数据操作,同时指出分库时可能出现的数据倾斜问题,具有一定的参考价值,感兴趣的可以了解一下

一 安装:

https://www.jb51.net/article/237937.htm

二资源

  • ROLE
  • master1
  • slave1
  • slave2
  • Sharding

三为什么分库分表

业务越来越大,数据库扛不住啊。

扛不住会怎样呢?数据库性能降低

解决方法:

1 增加mysql硬件资源

2 历史数据归档

3 增加数据库—— 读写分离

4 增加数据库—— 分库分表

5 云数据库TIDB

四如何分库分表

1 垂直拆分 -- 微服务化 -- 一个服务一个库

1) 每个库(表)的数据结构一般不同
2) 每个库(表)至少有一个列一样—— 为了join

缺点:
1)数据不均衡。

2 水平拆分--分库分表 -- 数据存的不一样

1)每个库(表)的数据结构都一样
2)双十一订单大,订单一定均分到012库中,解决数据热点问题

缺点:1)扩容的问题,麻烦

3 水平拆分和垂直拆分结合:垂直拆库,水平拆表

五Sharding-Proxy分库分表实战

1 master建库建表

库:
bookstore_0
bookstore_1
在库中分别建表:
bookinfo_0
bookinfo_1

2 修改Config-sharding.yaml

①把mysql驱动jar包复制到lib文件夹下

②config-sharding.yaml

schemaName: bookstore

dataSources:
  bookstore_0:
    url: jdbc:mysql://IP:3306/bookstore_0?serverTimezone=UTC&useSSL=false
    username: root
    password: 
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50
  bookstore_1:
    url: jdbc:mysql://IP:3306/bookstore_0?serverTimezone=UTC&useSSL=false
    username: root
    password: 
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50

shardingRule:
  tables:
    bookinfo:
      actualDataNodes: bookstore_${0..1}.bookinfo_${0..1}
      databaseStrategy:
        inline:
          shardingColumn: storeid
          algorithmExpression: bookstore_${storeid % 2}
      tableStrategy:
        inline:
          shardingColumn: bookid
          algorithmExpression: bookinfo_${bookid % 2}
      #keyGenerator:
        #type: SNOWFLAKE
        #column: order_id

  bindingTables:
    - bookinfo
  defaultDatabaseStrategy:
    inline:
      shardingColumn: storeid
      algorithmExpression: bookstore_${storeid % 2}
  defaultTableStrategy:
    none:
  •  mysql -hIP -uroot -P3307 -p     

4 进行sql命令操作,只能看到一个库

5 插入数据。Sharding-Proxy代理端里有数据了

6 连接真正的数据库

这里有个问题:
分库失败,全部写入bookstore_0
分表成功

到此这篇关于Sharding-Proxy分库分表的文章就介绍到这了,更多相关Sharding-Proxy分库分表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot 整合 Fisco Bcos的案例分析(区块链)

    Spring Boot 整合 Fisco Bcos的案例分析(区块链)

    本篇文章介绍的 Spring Boot 整合 Fisco Bcos的案例,是在阿里云服务器上部署验证的。大家可根据自己的电脑环境,对比该案例进行开发即可,具体案例代码跟随小编一起看看吧
    2022-01-01
  • Spring中Bean创建完后打印语句的两种方法

    Spring中Bean创建完后打印语句的两种方法

    这篇文章主要介绍了Spring中Bean创建完后打印语句的两种方法,一个是实现InitializingBean接口,另一个使用@Bean注解和initMethod属性,通过代码示例介绍的非常详细,感兴趣的小伙伴可以参考阅读
    2023-07-07
  • mybatis in查询条件过长的解决方案

    mybatis in查询条件过长的解决方案

    这篇文章主要介绍了mybatis in查询条件过长的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Mybatis-Plus 动态表名的实践

    Mybatis-Plus 动态表名的实践

    本文主要介绍了Mybatis-Plus 动态表名的实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • Spring Boot配置Thymeleaf(gradle)的简单使用

    Spring Boot配置Thymeleaf(gradle)的简单使用

    今天小编就为大家分享一篇关于Spring Boot配置Thymeleaf(gradle)的简单使用,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • java中变量和常量详解

    java中变量和常量详解

    这篇文章主要介绍了Java中变量和常量详解,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java串口通信JSerialComm的实现

    Java串口通信JSerialComm的实现

    本文介绍了使用JSerialComm库进行Java串口通信,包括引入库的方式、设置和操作串口、发送与接收数据以及添加数据监听器,具有一定的参考价值,感兴趣的可以了解一下
    2026-01-01
  • Mybatis中and和循环or混用操作(or转换成in)

    Mybatis中and和循环or混用操作(or转换成in)

    这篇文章主要介绍了Mybatis中and和循环or混用操作(or转换成in),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot动态定时功能实现方案详解

    SpringBoot动态定时功能实现方案详解

    在SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文件里,不能在项目运行中动态修改任务执行时间,实在不太灵活。现在我们就来实现可以动态修改cron表达式的定时任务,感兴趣的可以了解一下
    2022-11-11
  • Java 8对LinkedHashSet元素进行排序的操作方法

    Java 8对LinkedHashSet元素进行排序的操作方法

    LinkedHashSet 是 Java 集合框架中的一个类,它继承自 HashSet,并实现了 Set 接口,然而,LinkedHashSet 不支持元素的排序,它仅仅保持插入顺序,所以本文给大家介绍了Java 8 如何对 LinkedHashSet 元素进行排序,需要的朋友可以参考下
    2024-11-11

最新评论