zoukankan      html  css  js  c++  java
  • Spring Boot + ShardingSphere + JPA 实现读写分离

    CREATE DATABASE database0;
    USE database0;
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`(
    id bigint(64) not null auto_increment,
    city varchar(20) not null,
    name varchar(20) not null,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    CREATE DATABASE database1;
    USE database1;
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`(
    id bigint(64) not null auto_increment,
    city varchar(20) not null,
    name varchar(20) not null,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    INSERT INTO `database1`.`user`(`id`, `city`, `name`) VALUES (001, '青岛', '测试库1');

    CREATE DATABASE database2;
    USE database2;
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user`(
    id bigint(64) not null auto_increment,
    city varchar(20) not null,
    name varchar(20) not null,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    INSERT INTO `database2`.`user`(`id`, `city`, `name`) VALUES (002, '胶州', '测试库2');
    2. 新建springboot项目
    2.1 pom.xml
    <!-- web依赖 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- mybatis依赖 -->
    <dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
    </dependency>

    <!-- mysql依赖 -->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    </dependency>

    <!-- druid数据库连接池依赖 -->
    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.23</version>
    </dependency>

    <!-- ShardingSphere依赖 -->
    <dependency>
    <groupId>io.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>3.1.0</version>
    </dependency>

    <!-- jap依赖 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    2.2 application.yml
    server: # 端口号
    port: 8888
    sharding:
    jdbc:
    dataSource:
    names: db-test0,db-test1,db-test2
    # 配置主库
    db-test0:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://ip:3306/database0?useUnicode=true&characterEncoding=utf8&tinyInt1isBit=false&useSSL=false&serverTimezone=GMT
    username: 账户
    password: 密码
    #最大连接数
    maxPoolSize: 20
    db-test1: # 配置第一个从库
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://ip:3306/database1?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT
    username: 账户
    password: 密码
    maxPoolSize: 20
    db-test2: # 配置第二个从库
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://ip:3306/database2?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT
    username: 账户
    password: 密码
    maxPoolSize: 20
    config:
    masterslave: # 配置读写分离
    load-balance-algorithm-type: round_robin # 配置从库选择策略,提供轮询与随机,这里选择用轮询//random 随机 //round_robin 轮询
    name: db1s2
    master-data-source-name: db-test0
    slave-data-source-names: db-test1,db-test2
    props:
    sql:
    show: true # 开启SQL显示,默认值: false,注意:仅配置读写分离时不会打印日志!!!
    spring:
    main:
    allow-bean-definition-overriding: true # 允许重名的bean可以被覆盖
    jpa:
    hibernate:
    ddl-auto: update # 每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
    naming: # 驼峰命名法
    physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
    show-sql: true # 打印sql

    小蚊子大人
  • 相关阅读:
    关于 数据文件自增长 的一点理解
    Oracle 9i 升级后 OLAP Catalog 组件 Invalid
    Linux 查看软件位置的命令
    Oracle RAC + Data Guard 环境搭建
    Oracle 9.2.0.8 ODCIXXX 对象无效
    Oracle 9.2.0.8 ODCIXXX 对象无效
    Oracle 索引可以比表大
    Oracle Data Guard 环境下的数据库升级方法
    RAC ONS 不能启动
    Unix 和 Linux 双机热备 概念
  • 原文地址:https://www.cnblogs.com/ywsheng/p/14945765.html
Copyright © 2011-2022 走看看