前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊 Sharding-JDBC 实现 读写分离~

聊聊 Sharding-JDBC 实现 读写分离~

作者头像
码猿技术专栏
发布2023-05-01 11:28:32
2830
发布2023-05-01 11:28:32
举报

这是《ShardingSphere 进阶》专栏的第3篇文章,往期文章如下:

今天聊一下如何通过Sharding-JDBC简单的实现读写分离~

为什么要读写分离?

读写分离则是将事务性的增、改、删操作在主库执行,查询操作在从库执行。

一般业务的写操作都是比较耗时,为了避免写操作影响查询的效率,可以使用读写分离。

当然读写分离并不是万能的,还有前面的分库分表方案。

读写分离如何搭建?

MySQL搭建读写分离非常简单,一般有一主一从、一主多从,对于MySQL的主从的相关概念这里就不再详细介绍了。

下面陈某就以MySQL5.7为例,使用docker搭建一个一主一从的架构,步骤如下:

1. pull镜像

使用如下命令从镜像仓库中下载镜像:

2. 创建目录

MySQL数据和配置文件挂载的目录:

3. 编写配置master节点配置

修改MySQL主节点的配置文件,内容如下:

4. 编写配置slave节点配置

修改MySQL从节点的配置文件,内容如下:

5. 启动MySQL主节点

命令如下:

6. 添加复制master数据的用户reader,供从服务器使用

命令如下:

7. 创建并运行mysql从服务器

命令如下:

8. 在从服务器上配置连接主服务器的信息

首先主服务器上查看master_log_filemaster_log_pos两个参数,然后切换到从服务器上进行主服务器的连接信息的设置。

主服务上执行:

docker查看主服务器容器的ip地址:

从服务器上执行:

9. 从服务器启动I/O 线程和SQL线程

Slave_IO_Running: Yes,Slave_SQL_Running: Yes即表示启动成功。

Sharding-JDBC 实现读写分离

上面使用Docker搭建了一个MySQL的一主一从的架构,如下:

ip:port

节点

数据库

192.168.47.149:3306

主节点

product_db_1

192.168.47.149:3307

从节点

product_db_1

Sharding-JDBC对于读写分离的配置非常简单,分为如下几个步骤:

“关于数据库中的表的SQL就不再贴了,文末有案例源码,自己下载! ”

1. 数据源配置

无论是分库分表还是读写分离,数据源的声明肯定是必须的,如下:

2. 主从节点配置

第①步仅仅配置了数据源,并未指定哪个是主库,哪个是从库,Sharding-JDBC 默认是不知道哪个主库还是从库的,因此需要自己配置。

配置规则如下:

这里的<master-slave-data-source-name>一定要注意,这个是主从配置的名称(相当于逻辑数据源),名称可以随意,但是一定要唯一。

陈某的配置如下:

指定的逻辑数据源为ms,主库为ds1,从库为ds2

load-balance-algorithm-type:指定从库的负载均衡算法,后面文章介绍 ”

3. 测试

经过上面两步的配置,Sharding-JDBC的读写分离已经配置成功,下面来测试一下。

理想效果:

  • 写操作:任何的写操作都应该在主库数据源ds1中执行
  • 读操作:任何的读操作都应该在从库数据源ds2中执行

1、写操作

直接insert插入一条数据,查看Sharding-JDBC的日志,如下:

“可以看到都在ds1中执行了 ”

2、读操作

根据商品ID查询一条数据,效果如下:

“可以看到都在ds2中执行了 ”

总结

本篇文章介绍了MySQL的读写分离架构搭建以及使用Sharding-JDBC去实现程序中无感知使用读写分离。

关于读写分离还有一些内容未介绍,将会放在后面文章详细介绍。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码猿技术专栏 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要读写分离?
  • 读写分离如何搭建?
    • 1. pull镜像
      • 2. 创建目录
        • 3. 编写配置master节点配置
          • 4. 编写配置slave节点配置
            • 5. 启动MySQL主节点
              • 6. 添加复制master数据的用户reader,供从服务器使用
                • 7. 创建并运行mysql从服务器
                  • 8. 在从服务器上配置连接主服务器的信息
                    • 9. 从服务器启动I/O 线程和SQL线程
                    • Sharding-JDBC 实现读写分离
                      • 1. 数据源配置
                        • 2. 主从节点配置
                          • 3. 测试
                          • 总结
                          相关产品与服务
                          容器服务
                          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档