二Sharding Sphere 读写分离
Posted laughing Coding
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二Sharding Sphere 读写分离相关的知识,希望对你有一定的参考价值。
一、读写分离
为了确保数据库产品的稳定性,很多数据库拥有双机热备功能。也就是,第一台数据库服务器,是对外提供增删改查业务的生产服务器;第二台数据库服务器,仅仅接收来自第一台服务器的备份数据(注意,不同数据库产品,第一台数据库服务器,向第二台数据库服务器发送备份数据的方式不同)。当第一台数据库崩溃后,第二台数据库服务器,可以立即上线来代替第一台数据库服务器。
sharding-jdbc分析sql语义,实现路由读写操作到不同的数据库服务器。
由数据库进行数据同步。
二、mysql配置读写分离
启动两个mysql实例
一个是我本机、一个是我的云服务器。
Master
Master为服务器上节点
vim /etc/my.cnf
重启
service mysql restart
创建主从复制账号
172.16.15.25 为windows的slave机器
GRANT REPLICATION SLAVE ON *.* to 'myslave'@'%' identified by 'xxxxx';
刷新权限
flush privileges;
SHOW MASTER STATUS
从服务器
STOP SLAVE
CHANGE MASTER TO
MASTER_HOST = '49.232.61.212',
MASTER_USER = 'myslave',
MASTER_PASSWORD = 'xxxxx',
MASTER_LOG_FILE = 'mysql-bin.000002',
MASTER_LOG_POS = 154;
start slave;
设置成功
这样就实现了mysql的主从配置,master库负责增删改操作,slave专注于查询,实现了性能与数据安全的提升。
三、shardingJDBC读写分离
shardingJDBC不提供数据同步,我们做的是通过shardingJDBC配置,解析sql语义,实现读写分离。
注意两个数据库需要结构数据一样。(先同步)
配置
# 读写分离
# 一个实体类可对应两张表
spring.main.allow-bean-definition-overriding=true
# sharding 多数据源配置
spring.shardingsphere.datasource.names=ds1,ds2
# ds1 212Master
spring.shardingsphere.datasource.ds1.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.ds1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.ds1.url=jdbc:mysql://49.232.61.212:3306/sharding_1?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
spring.shardingsphere.datasource.ds1.username=root
spring.shardingsphere.datasource.ds1.password=xxxxxxxxx
# ds2 本地slave
spring.shardingsphere.datasource.ds2.type=com.alibaba.druid.pool.DruidDataSource
spring.shardingsphere.datasource.ds2.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shardingsphere.datasource.ds2.url=jdbc:mysql://127.0.0.1:3306/sharding_1?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
spring.shardingsphere.datasource.ds2.username=root
spring.shardingsphere.datasource.ds2.password=gwssi
# 主从逻辑 ds为统一的
spring.shardingsphere.sharding.master-slave-rules.ds.master-data-source-name=ds1
spring.shardingsphere.sharding.master-slave-rules.ds.slave-data-source-names=ds2
# 表配置
spring.shardingsphere.sharding.tables.user.actual-data-nodes=ds.user_1
# 控制台显示sql
spring.shardingsphere.props.sql.show=true
写
读
以上是关于二Sharding Sphere 读写分离的主要内容,如果未能解决你的问题,请参考以下文章