MYSQLg高级------Sharding-JDBC 实现读写分离

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MYSQLg高级------Sharding-JDBC 实现读写分离

Sharding-JDBC 实现读写分离


1 、读写分离概念

读写分离原理:


上面的读写分离其实就是:2太数据库主从机制,一个提供读(select )另一个提供 增删改 为了保证数据的一致性他们直接是数据同步的;


下面说下数据咋同步的

那个图好理解看那个;

主服务器有一个binlog日志开启的功能他会记录所有增删改的操作,当主服务器进行相关的操作的时候 日志必定会记录他的操作;然后这个时候我们的从服务器他就会 实时的监控这个日志(biglog)的一些变化;来实现我们数据同步;



Sharding-JDBC通过sql语句语义分析,实现读写分离过程,并不会做数据同步,数据同步由MySQL实现


2 、 MySQL 配置读写分离

(我本地是没有尝试成功的)

第一步 创建两个 MySQL 数据库服务,并且启动两个 MySQL 服务

( 1 )复制之前MySQL目录


( 2 )修改复制之后配置文件

⚫ 修改端口号,文件路径

⚫ 需要把数据文件目录再复制一份


( 3 )把复制修改之后从数据库在windows安装服务


使用命令:(我就是这步失败的怎么也成功不了)

在bin下执行

mysqld install mysqls1 --defaults-file="D:\Program Files\MySQL\MySQL
Server-s1\my.ini"



第二步 配置 MySQL 主从服务器

( 1 )在主服务器配置文件

[mysqld]
#开启日志
log‐bin = mysql‐bin
#设置服务id,主从不能一致
server‐id = 1
#设置需要同步的数据库
binlog‐do‐db=user_db
#屏蔽系统库同步
binlog‐ignore‐db=mysql
binlog‐ignore‐db=information_schema
binlog‐ignore‐db=performance_schema


( 2 )在从服务器配置文件

[mysqld]
#开启日志
log‐bin = mysql‐bin
#设置服务id,主从不能一致
server‐id = 2
#设置需要同步的数据库
replicate_wild_do_table=user_db.%
#屏蔽系统库同步
replicate_wild_ignore_table=mysql.%
replicate_wild_ignore_table=information_schema.%
replicate_wild_ignore_table=performance_schema.%


( 3 )把主和从服务器重启


第三步 创建用于主从复制的账号

#切换至主库bin目录,登录主库

mysql ‐h localhost ‐uroot ‐p

#授权主备复制专用账号

GRANT REPLICATION SLAVE ON . TO 'db_sync'@'%' IDENTIFIED BY 'db_sync';

#刷新权限

FLUSH PRIVILEGES;

#确认位点 记录下文件名以及位点

show master status;


第四步 主从数据同步设置

#切换至从库bin目录,登录从库

mysql ‐h localhost ‐P3307 ‐uroot ‐p

#先停止同步

STOP SLAVE;

#修改从库指向到主库,使用上一步记录的文件名以及位点

CHANGE MASTER TO
master_host = 'localhost',
master_user = 'db_sync',
master_password = 'db_sync',
master_log_file = 'mysql-bin.000177',
master_log_pos = 107 ;


#启动同步

START SLAVE;

#查看Slave_IO_Runing和Slave_SQL_Runing字段值都为Yes,表示同步配置成功。如果不为Yes,请排查相关异常。

show slave status


3 、 Sharding-JDBC 操作

( 1 )配置读写分离策略


你们能安装成功也可以直接在数据库新增删除个数据查看是否成功;


#user_db从服务器

spring.shardingsphere.datasource.s0.type=com.alibaba.druid.pool.DruidDataSourc
e
spring.shardingsphere.datasource.s0.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.s0.url=jdbc:mysql://localhost:3307/user_db?se
rverTimezone=GMT%2B
spring.shardingsphere.datasource.s0.username=root
spring.shardingsphere.datasource.s0.password=root
主库从库逻辑数据源定义 ds0为user_db
spring.shardingsphere.sharding.master-slave-rules.ds0.master-data-source-
name=m
spring.shardingsphere.sharding.master-slave-rules.ds0.slave-data-source-
names=s
配置user_db数据库里面t_user 专库专表
#spring.shardingsphere.sharding.tables.t_user.actual-data-nodes=m$->{0}.t_user
t_user分表策略,固定分配至ds0的t_user真实表
spring.shardingsphere.sharding.tables.t_user.actual-data-nodes=ds0.t_user


( 2 )编写测试代码

//添加操作
@Test
public void addUserDb() {
User user = new User();
user.setUsername("lucymary");
user.setUstatus("a");
userMapper.insert(user);
}
//查询操作
@Test
public void findUserDb() {
QueryWrapper wrapper = new QueryWrapper<>();
//设置userid值
wrapper.eq("user_id",465508031619137537L);
User user = userMapper.selectOne(wrapper);
System.out.println(user);
}


视频地址

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
关系型数据库 MySQL Java
MySQL的主从复制 && SpringBoot整合Sharding-JDBC解决读写分离
MySQL的主从复制 && SpringBoot整合Sharding-JDBC解决读写分离
39 0
|
8月前
|
SQL 算法 Java
Myqsql使用Sharding-JDBC分表分库和读写分离 2
Myqsql使用Sharding-JDBC分表分库和读写分离
82 0
|
3天前
|
负载均衡 算法 Java
Sharding-JDBC如何实现读写分离
通过以上步骤,Sharding-JDBC能够实现数据库的读写分离,从而提高应用程序的读取性能。欢迎关注威哥爱编程,一起学习成长。
|
8月前
|
SQL 算法 Java
Myqsql使用Sharding-JDBC分表分库和读写分离 1
Myqsql使用Sharding-JDBC分表分库和读写分离
54 0
|
3天前
|
Java 关系型数据库 MySQL
②⑩② 【读写分离】Sharding - JDBC 实现 MySQL读写分离[SpringBoot框架]
②⑩② 【读写分离】Sharding - JDBC 实现 MySQL读写分离[SpringBoot框架]
48 0
|
SQL 负载均衡 算法
聊聊 Sharding-JDBC 实现 读写分离~
聊聊 Sharding-JDBC 实现 读写分离~
|
druid Java API
Java:SpringBoot整合Sharding-Jdbc实现数据库读写分离
Java:SpringBoot整合Sharding-Jdbc实现数据库读写分离
137 0
|
SQL 负载均衡 算法
使用Sharding-JDBC 实现Mysql读写分离
使用Sharding-JDBC 实现Mysql读写分离
使用Sharding-JDBC 实现Mysql读写分离
|
SQL 关系型数据库 MySQL
Sharding-JDBC搭建MySQL读写分离
Sharding-JDBC搭建MySQL读写分离
|
监控 关系型数据库 MySQL
ShardingSphere-Sharding-JDBC (读写分离) | 学习笔记
快速学习ShardingSphere-Sharding-JDBC (读写分离)。
184 0
ShardingSphere-Sharding-JDBC (读写分离)  | 学习笔记