博客
关于我
shardingsphere实现数据库读写分离
阅读量:330 次
发布时间:2019-03-04

本文共 2995 字,大约阅读时间需要 9 分钟。

Apache ShardingSphere 实验配置与验证

一、实验环境

在本次实验中,我们采用以下数据库架构进行配置:

  • 主数据库userdb_master
  • 从数据库userdb_slave0userdb_slave1

每个数据库均包含一张user表,字段定义如下:

CREATE TABLE `user` (    `id` bigint(255) NOT NULL AUTO_INCREMENT,    `name` varchar(255) DEFAULT NULL,    `uid` varchar(255) DEFAULT NULL,    `school` varchar(255) DEFAULT NULL,    `age` int(11) DEFAULT NULL,    PRIMARY KEY (`id`))

使用的Shardingsphere版本为4.0.0-RC3,本次实验未实现数据库的主从同步,只是创建了一个从库。


二、Spring Boot 项目引入 ShardingSphere

为了实现数据库的分片与读写分离,我们需要在Spring Boot项目中引入Shardingsphere相关组件。以下是需要配置的依赖项:

org.apache.shardingsphere
sharding-jdbc-spring-boot-starter
4.0.0-RC3
org.apache.shardingsphere
sharding-jdbc-spring-namespace
4.0.0-RC3

三、配置 application.properties

在Spring Boot项目中,我们需要通过application.properties文件配置Shardingsphere的数据源信息。以下是完整的配置示例:

# 读写分离配置,采用一主多从的方式spring.profiles.active= # 可根据实际需求配置# 数据源配置spring.shardingsphere.datasource.names=db-master-user,db-slave-user,db-slave1-user# 主数据源配置spring.shardingsphere.datasource.db-master-user.type=com.zaxxer.hikari.HikariDataSourcespring.shardingsphere.datasource.db-master-user.driver-class-name=com.mysql.jdbc.Driverspring.shardingsphere.datasource.db-master-user.jdbc-url=jdbc:mysql://youripaddress:3306/userdb_master?characterEncoding=utf-8&serverTimezone=UTCspring.shardingsphere.datasource.db-master-user.username=springspring.shardingsphere.datasource.db-master-user.password=spring# 从数据源配置spring.shardingsphere.datasource.db-slave-user.type=com.zaxxer.hikari.HikariDataSourcespring.shardingsphere.datasource.db-slave-user.driver-class-name=com.mysql.jdbc.Driverspring.shardingsphere.datasource.db-slave-user.jdbc-url=jdbc:mysql://youripaddress:3306/userdb_slave0?characterEncoding=utf-8&serverTimezone=UTCspring.shardingsphere.datasource.db-slave-user.username=springspring.shardingsphere.datasource.db-slave-user.password=spring# 第二个从数据源配置spring.shardingsphere.datasource.db-slave1-user.type=com.zaxxer.hikari.HikariDataSourcespring.shardingsphere.datasource.db-slave1-user.driver-class-name=com.mysql.jdbc.Driverspring.shardingsphere.datasource.db-slave1-user.jdbc-url=jdbc:mysql://youripaddress:3306/userdb_slave1?characterEncoding=utf-8&serverTimezone=UTCspring.shardingsphere.datasource.db-slave1-user.username=springspring.shardingsphere.datasource.db-slave1-user.password=spring# 分片配置spring.shardingsphere.masterslave.load-balance-algorithm-type=round_robinsspring.shardingsphere.masterslave.name=ds_msspring.shardingsphere.masterslave.master-data-source-name=db-master-userspring.shardingsphere.masterslave.slave-data-source-names=db-slave-user,db-slave1-user

四、验证与测试

1. 数据插入

通过代码向user表中插入一条数据。插入操作会自动路由到主数据库进行写入。可以通过Shardingsphere提供的监控工具查看具体的写入情况。

2. 数据查询

在查询数据时,Shardingsphere会根据配置的负载均衡算法(round_robins)自动轮询从数据库,确保读写分离的高效性。可以手动查询从数据库的数据,验证读取结果是否正确。

3. 数据删除与更新

user表进行删除或更新操作时,同样会通过主数据库执行。可以通过日志或监控工具跟踪操作结果,确保数据变化正确反映到各个从库。


通过以上配置和验证步骤,可以实现数据库的分片与读写分离,充分发挥Shardingsphere的优化能力。

转载地址:http://vcuh.baihongyu.com/

你可能感兴趣的文章
Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
查看>>
Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
查看>>
Network Sniffer and Connection Analyzer
查看>>
Nginx + uWSGI + Flask + Vhost
查看>>
Nginx Location配置总结
查看>>
Nginx 反向代理解决跨域问题
查看>>
nginx 后端获取真实ip
查看>>
Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
查看>>
nginx 常用配置记录
查看>>
Nginx 我们必须知道的那些事
查看>>
nginx 配置~~~本身就是一个静态资源的服务器
查看>>
Nginx的是什么?干什么用的?
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NI笔试——大数加法
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
NSSet集合 无序的 不能重复的
查看>>
nullnullHuge Pages
查看>>
Numpy如何使用np.umprod重写range函数中i的python
查看>>