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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
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);
}


视频地址

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
关系型数据库 MySQL Java
MySQL的主从复制 && SpringBoot整合Sharding-JDBC解决读写分离
MySQL的主从复制 && SpringBoot整合Sharding-JDBC解决读写分离
410 0
|
SQL 算法 Java
Myqsql使用Sharding-JDBC分表分库和读写分离 2
Myqsql使用Sharding-JDBC分表分库和读写分离
366 0
|
SQL 算法 Java
Myqsql使用Sharding-JDBC分表分库和读写分离 1
Myqsql使用Sharding-JDBC分表分库和读写分离
262 0
|
Java 关系型数据库 MySQL
②⑩② 【读写分离】Sharding - JDBC 实现 MySQL读写分离[SpringBoot框架]
②⑩② 【读写分离】Sharding - JDBC 实现 MySQL读写分离[SpringBoot框架]
193 0
|
负载均衡 算法 Java
Sharding-JDBC如何实现读写分离
通过以上步骤,Sharding-JDBC能够实现数据库的读写分离,从而提高应用程序的读取性能。欢迎关注威哥爱编程,一起学习成长。
259 0
|
存储 数据库
MYSQLg高级-------分库分表之核心Sharding-JDBC(三)
MYSQLg高级-------分库分表之核心Sharding-JDBC(三)
181 0
|
Java 数据库
MYSQLg高级-------分库分表之核心Sharding-JDBC(二)
MYSQLg高级-------分库分表之核心Sharding-JDBC(二)
183 0
|
算法 druid Java
MYSQLg高级-------分库分表之核心Sharding-JDBC(一)
MYSQLg高级-------分库分表之核心Sharding-JDBC(一)
333 0
|
SQL 负载均衡 算法
使用Sharding-JDBC 实现Mysql读写分离
使用Sharding-JDBC 实现Mysql读写分离
使用Sharding-JDBC 实现Mysql读写分离
|
SQL 关系型数据库 MySQL
Sharding-JDBC搭建MySQL读写分离
Sharding-JDBC搭建MySQL读写分离