首页 > 其他分享 >shardingSphere-JDBC 多数据源主从+切片配置

shardingSphere-JDBC 多数据源主从+切片配置

时间:2023-12-28 17:32:22浏览次数:36  
标签:jdbc java log 数据源 mysql JDBC master shardingSphere slave

4.x版本配置

maven依赖

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>4.1.1</version>
</dependency>

application配置

spring:
  shardingsphere:
    datasource:
      names: master,slave,master-log,slave-log
      master:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.jdbc.Driver
        jdbc-url: jdbc:mysql://192.168.100.100:3306/db_user
        username: root
        password: 123456
      slave:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.jdbc.Driver
        jdbc-url: jdbc:mysql://192.168.100.100:3301/db_user
        username: root
        password: 123456
      master-log:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.jdbc.Driver
        jdbc-url: jdbc:mysql://192.168.100.100:3310/db_order
        username: root
        password: 123456
      slave-log:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.mysql.jdbc.Driver
        jdbc-url: jdbc:mysql://192.168.100.100:3311/db_order
        username: root
        password: 123456
    props:
      sql:
        show: true
    # 切片 + 主从
    sharding:
      # 主从分离 主从 + 双数据源
      master-slave-rules:
        user:
          master-data-source-name: master
          slave-data-source-names: slave
        log:
          master-data-source-name: master-log
          slave-data-source-names: slave-log
      # 表分片
      tables:
        t_order:
          actual-data-nodes: log.t_order$->{0..1}
          table-strategy:
            inline:
              sharding-column: id
              algorithm-expression: t_order$->{id % 2}
      # 默认数据源
      default-data-source-name: user

image.png

报错注意事项

JDK版本过高,切换 JDK1.8,或者在启动参数上添加--add-opens=java.base/java.lang=ALL-UNNAMED就可以了

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field private static final long java.lang.Number.serialVersionUID accessible: module java.base does not "opens java.lang" to unnamed module @1324409e
### The error may exist in fun/psgame/demo/mapper/DeviceMapper.java (best guess)
### The error may involve fun.psgame.demo.mapper.DeviceMapper.insert-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO tb_device  ( device_id, device_type )  VALUES  ( ?, ? )
### Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field private static final long java.lang.Number.serialVersionUID accessible: module java.base does not "opens java.lang" to unnamed module @1324409e

标签:jdbc,java,log,数据源,mysql,JDBC,master,shardingSphere,slave
From: https://blog.51cto.com/learningfish/9017172

相关文章

  • 【Spring教程31】SSM框架整合实战:从零开始学习SSM整合配置,如何编写Mybatis SpringMVC
    目录1流程分析2整合配置2.1步骤1:创建Maven的web项目2.2步骤2:添加依赖2.3步骤3:创建项目包结构2.4步骤4:创建SpringConfig配置类2.5步骤5:创建JdbcConfig配置类2.6步骤6:创建MybatisConfig配置类2.7步骤7:创建jdbc.properties2.8步骤8:创建SpringMVC配置类2.9步骤9:创......
  • SpringBoot 整合 ShardingSphere JDBC、MySQL分表实例
    1.概述ShardingSphere分为ShardingSphere-JDBC、ShardingSphere-Proxy、ShardingSphere-Sidecar(TODO)。ShardingSphere官方手册:传送门;这里使用的是ShardingSphere-JDBC,ShardingSphere-JDBC为轻量级Java框架,在Java的JDBC层提供的额外服务。它使用客户端直连数据库,以jar......
  • flink 的安装以及fink-cdc 基于多数据源导入的es 的简单使用
    此文档是参照flink-cdc文档(https://ververica.github.io/flink-cdc-connectors/master/content/快速上手/mysql-postgres-tutorial-zh.html)案例 的最佳实践1.下载flinkrelease最新版本1.18.0并解压, https://repo.maven.apache.org/maven2/org/apache/flink/flink-......
  • Spring系列:基于Spring-Jdbc实现事务
    目录一、事务基本概念二、编程式事务三、声明式事务前期准备四、基于注解的声明式事务@Transactional注解标识的位置事务属性:只读事务属性:超时事务属性:回滚策略事务属性:隔离级别事务属性:传播行为测试五、基于XML的声明式事务一、事务基本概念①什么是事务数据库事务(transacti......
  • Java JDBC 详解、使用、连接池
    JDBC介绍Java数据库连接,JDBC(JavaDatabaseConnectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。简单说,jdbc是Java语言为了屏蔽具体的具体的数据库操作的细节不同提供的一个框架。在关系型数据库的处......
  • JDBC快速入门:从环境搭建到代码编写,轻松实现数据库增删改查操作!
    通过上篇文章我们已经对JDBC的基本概念和工作原理都有了一定的了解,本篇文章我们继续来探索如何从零开始,一步步搭建开发环境,编写代码,最后实现数据库的增删改查操作。一、开发环境搭建首先,我们需要准备的开发环境有:Java开发工具包(JDK)、数据库(如MySQL)、数据库驱动(如MySQLConnector/......
  • dremio hive jdbc arp date 类型问题记录
    简单记录下碰到的一些问题分析arthasstack查看调用stackcom.mysql.cj.jdbc.result.ResultSetImplgetDate效果ffect(classcount:2,methodcount:4)costin329ms,listenerId:11ts=2023-12-2606:18:17;thread_name=e3-1a758f......
  • JDBC快速入门:从环境搭建到代码编写,轻松实现数据库增删改查操作!
    通过上篇文章我们已经对JDBC的基本概念和工作原理都有了一定的了解,本篇文章我们继续来探索如何从零开始,一步步搭建开发环境,编写代码,最后实现数据库的增删改查操作。一、开发环境搭建首先,我们需要准备的开发环境有:Java开发工具包(JDK)、数据库(如MySQL)、数据库驱动(如MySQLConnector......
  • 什么是 MySQL JDBC 连接池中最高效的连接检测语句?
    在回答这个问题之前,首先我们看看MySQL中有哪些常用的JDBC连接池:c3p0DBCPDruidTomcatJDBCPoolHikariCP这些连接池中,这些连接池中,c3p0是一个老牌的连接池,很多流行框架,在其老版本中,都将c3p0作为默认的连接池。DBCP和TomcatJDBCPool(Tomcat的默认连接池)是Apache......
  • SpringBoot 这么实现动态数据源切换,就很丝滑!
    大家好,我是小富~简介项目开发中经常会遇到多数据源同时使用的场景,比如冷热数据的查询等情况,我们可以使用类似现成的工具包来解决问题,但在多数据源的使用中通常伴随着定制化的业务,所以一般的公司还是会自行实现多数据源切换的功能,接下来一起使用实现自定义注解的形式来实现一下。......