技术标签: MySQL mysql ShardingSphere 读写分离
关于MySQL主从搭建,可以参考我的文章学习docker第五天之MySQL主从复制搭建_Husky_jzq的博客-程序员宅基地
首先导入相关的pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.22</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
导入依赖后配置shardingsphere-jdbc的yml文件
spring:
shardingsphere:
# 数据源配置
datasource:
# 数据源名称,多数据源以逗号分隔
names: master,slave
master:
# 数据库连接池类名称
type: com.zaxxer.hikari.HikariDataSource
# 数据库驱动类名
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://ip:端口/数据库?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
slave:
# 数据库连接池类名称
type: com.zaxxer.hikari.HikariDataSource
# 数据库驱动类名
driver-class-name: com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://ip:端口/数据库?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
# 规则配置
rules:
readwrite-splitting:
load-balancers:
ms:
type: ROUND_ROBIN
props:
workId: 1
data-sources:
ms:
type: Static
load-balancer-name: round-robin
props:
write-data-source-name: master
read-data-source-names: slave
# 属性配置
props:
# 展示修改以后的sql语句
sql-show: true
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
然后测试读写情况,读是在slave,写是在master
至此,读写分离集成成功!
笔者此次读写分离是一主一从,既然读写分离就涉及事务问题。在配置成功后发现使用事务失败@Transactional。基于之前项目配置过一次双数据源和本次读写分离的形式,笔者认为,既然是一主一从,按理说只需要指定主库进行事务即可(因为从库会同步主库)。所以在进行相关查阅后,进行事务管理器的配置,指定@Transactional的事务为主库事务即可。相关配置如下:
进过测试,事务成功
主库数据
从库数据
+、-、*、/运算的两个数中有一个数为float或double型,结果为double型,因为系统将所有的float型数据转换为double类型数据再进行计算。如果int型与float或double型数据进行计算,先把int型和float型数据转换为double数据在进行计算,结果为double型。字符(char)型数据与整形数据计算,及时把char型数据的ASCLL代码与整形数据进行计算。如..._c语言不同类型数据的混合运算
算法题:判定一个int类型数组中一共有多少个具体的数字?1. 算法题目:2. 具体思路3. 代码实现4. 运行结果1. 算法题目:判定一个int类型数组中一共有多少个数字3.比如{3,31,2,133}一共有4个32. 具体思路Java将int型数组转为String型数组3. 代码实现import java.util.Scanner;public class ConvertIntIntoString { public static void main(String[] args)_java int数组转换成string
首先,要先获得技术支持步骤一,先在USB模块上完成4G步骤二,移植到PCIE座子上磨刀不费砍材功,请先拿到技术文档支持,我的参考是:Quectel_Android_RIL_Driver_V3.3.62_master_beta(支持EC200A).tgz主要文件:Quectel_Android_RIL_Driver_V3.3.62_master_beta(支持EC200A)\libquectel-ril\arm64-v8a\libreference-ril.so主要文档:Quectel_A
就投稿数量来说,这是历史上最火的一届NLP顶会,有效投稿达到2694篇,相比去年的1544篇增加了75%。此外,本届ACL的评审质量也受到颇多吐槽。你的论文入选了吗?下表显示了每个领域的提交数量 (长论文、短论文和总数)。 其中,投稿最多的 3 个领域与 ACL 2018 相同: 信息提取和文本挖掘 (占所有有效提交的 9.2%,ACL 2018 的这一比例为 11.5%。不过..._2019acl接收论文列表
一、概述 SECS/GEM是由国际半导体设备与材料协会(SEMI)制定的连接性标准。此连接性标准用于在设备和工厂的资讯和控制系统间建立通讯。SECS是SEMI设备通讯标准的缩写。GEM指SEMI连接性标准E30,被定义为制造设备实现通讯和控制的一般模型。一般来说,SECS/GEM标准定义了信息、状态机和情境,来让工厂软件能够控制并监视制造设备。正式名称是SEMI连接性标准E3..._java实现secs/gem
Silver Cow Party Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %lluDescriptionOne cow from each of N _算法训练营训练4 最短路径poj3268
PHP 构造方法 __construct()PHP 构造方法 __construct() 允许在实例化一个类之前先执行构造方法。构造方法构造方法是类中的一个特殊方法。当使用 new 操作符创建一个类的实例时,构造方法将会自动调用,其名称必须是 __construct() 。在一个类中只能声明一个构造方法,而是只有在每次创建对象的时候都会去调用一次构造方法,不能主动的调用这个方法,所以通常用它执行一_php __construct函数
when系统实现阶段what程序设计编码就是把软件设计阶段的成果(主要是详细设计规格说明书)使用某种计算机程序编程语言转换成计算机能够理解的形式――程序代码的过程why翻译过程所使用的计算机程序设计语言及程序员的编程风格对程序的可靠性、可读性、可测试性、可维护性等方面都将产生很大的影响从而最终影响到计算机软件系统的质量。how程序复杂性度量 _编码阶段 如何描述
【Oracle 结论】order by colum asc 时,null默认被放在最后order by colum desc 时,null默认被放在最前nulls first 时,强制null放在最前,不为null的按声明顺序[asc|desc]进行排序nulls last 时,强制null放在最后,不为null的按声明顺序[asc|desc]进行排序【MySql 结论】order..._order by nulls oracle mysql
Mac homebrew报错Error: homebrew-core is a shallow clone.解决方法删除homebrew-core后更新即可cd /usr/local/Homebrew/Library/Taps/homebrewrm -rf homebrew-corebrew upgrade使用brew upgrade后会重新更新homebrew-core问题解析Mac更新完系统后使用homebrew就报错:Error: homebrew-core is a shal
最近在做将禅道上的功能接口做到手机端,在做登陆的时候,看了禅道的源码,是由cookie来登陆,所以要做一个模拟cookie登陆的接口,将拿到的cookie放到每次接口请求的头部中去,就可以正常访问了。 import java.io.OutputStreamWriter;import java.net.HttpURLConnection;import java.n..._java 模拟登录,获得cookie
默认情况下,无论是通过startService还是bindService启动同一Application的Service组件,都是运行在该Application的同一进程中。然而,很多时候我们希望该Service组件可以运行在不同的进程中,这样的目的往往是为了让其与该Application拥有独立的运行环境,可以避免类似因为Service的crash导致Application也被crash的问题发生..._android进程不一致