本文基于mysql5.6 ,实际测试中mysql5.7 ,8 配置一致 ,可以通用

首先搭建mysql主从,主从由mysql自己管理,这个就不赘述了。。

1.准备工作

下载 ShardingSphere-Proxy
官网地址
http://shardingsphere.apache.org/index_zh.html
下载跳转
https://shardingsphere.apache.org/document/current/cn/downloads/

下载MySQL驱动依赖
5版本:
https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.47/mysql-connector-java-5.1.47.jar
8版本:
https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11.jar
其他版本:
https://repo1.maven.org/maven2/mysql/mysql-connector-java/

安装java

这个自己按自己喜欢的方式装就行了 java8

将下载好的MySQL驱动移到解压好的中间件文件lib下

进入conf目录

这里就需要配置两个文件:server.yaml,config-readwrite-splitting.yaml
不管使用Sharding-Proxy做什么都需要配置server.yaml文件,他就是一个启动Sharding-Proxy的服务。
配置server.yaml
刚开始该文件全是注释,而我们配置读写分离大概只需要两个节点

rules:- !AUTHORITYusers:- root@%:123456  # 启动该服务的用户密码- sharding@:123456 # 启动该服务的用户密码  意思就是用这个密码来登录shardingshare生成的模拟mysqlprovider:type: NATIVE
props:max-connections-size-per-query: 1 # 一次查询请求在每个数据库实例中所能使用的最大连接数。kernel-executor-size: 16 # 线程池大小  默认值: CPU核数kernel-acceptor-size: 16  # 用于设置接收客户端请求的工作线程个数,默认为CPU核数*2proxy-frontend-flush-threshold: 128  # 设置传输数据条数的 IO 刷新阈值proxy-opentracing-enabled: false #是否开启链路追踪功能,默认为不开启proxy-hint-enabled: false #是否启用hint算法强制路由 默认falsesql-show: ture #是否打印sql 默认falsefalse
#  show-process-list-enabled: false# Proxy backend query fetch size. A larger value may increase the memory usage of ShardingSphere Proxy.# The default value is -1, which means set the minimum value for different JDBC drivers.proxy-backend-query-fetch-size: -1check-duplicate-table-enabled: falsesql-comment-parse-enabled: falseproxy-frontend-executor-size: 0 # Proxy frontend executor size. The default value is 0, which means let Netty decide.# Available options of proxy backend executor suitable: OLAP(default), OLTP. The OLTP option may reduce time cost of writing packets to client, but it may increase the latency of SQL execution# if client connections are more than proxy-frontend-netty-executor-size, especially executing slow SQL.proxy-backend-executor-suitable: OLAP
#  proxy-frontend-max-connections: 0 # Less than or equal to 0 means no limitation.
#  sql-federation-enabled: false
  1. 配置config-readwrite-splitting.yaml
schemaName: test #给你的连接起个名字
# 逻辑库,相当于独立主机与从机的一个中间库,搭起该服务后就要使用该逻辑库
# 注意修改已经配置好一个逻辑库并启动了,再修改这个逻辑库时就得先暂停该服务再启动。dataSources:write_ds:url: jdbc:mysql://192.168.1.1:3306/test?allowPublicKeyRetrieval=true&useSSL=falseusername: rootpassword: 123456connectionTimeoutMilliseconds: 30000  # 连接超时时间idleTimeoutMilliseconds: 60000  # 空闲连接回收超时毫秒数maxLifetimeMilliseconds: 1800000  # 连接最大存活时间毫秒数maxPoolSize: 50  # 最大连接数minPoolSize: 1  # 最小连接数 read_ds_0:url: jdbc:mysql://192.168.1.2:3306/test?allowPublicKeyRetrieval=true&useSSL=falseusername: rootpassword: 123456connectionTimeoutMilliseconds: 30000idleTimeoutMilliseconds: 60000maxLifetimeMilliseconds: 1800000maxPoolSize: 50minPoolSize: 1rules:
- !READWRITE_SPLITTINGdataSources:readwrite_ds:type: Staticprops:write-data-source-name: write_dsread-data-source-names: read_ds_0
  1. 启动服务
bin/start.sh

默认端口为3307

停止为:./stop.sh
netstat -nltp 可以查看端口是否起来
没起来可以看日志什么原因

验证
验证读写分离需要现关闭主从复制,先去从机将sql线程关闭,然后重启两个机子的服务。
这里就不贴图只说步骤:

先在主机与从机各自创键同一个库同一个表,并且在主机与从机的两个表各插入不同的数据。

连接Sharding-Proxy服务

mysql -h 服务的ip -P 服务的端口 -p
1
使用show databases;命令查看库时会发现库名与我们配置读写分离的逻辑库是一样的名字,然后我们切进该库然后使用show tables;查看表时自动会有一个跟主机与从机一样的表

查询该表的数据,会与从表的数据一样,当向该表插入数据时,在查询时,发现刚刚插入的数据没有显示

连接 主机的MySQL服务查询 主机的表,发现刚刚插入的数据有显示,那么证明MySQL8基于Sharding-Proxy5搭建读写分离就此成功!

一些部署中遇到的问题

连接失败

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: ** BEGIN NESTED EXCEPTION ** java.net.ConnectExceptionMESSAGE: Connection refused: connectSTACKTRACE:java.net.ConnectException: Connection refused: connect

需要先查看相应的MySQL服务是否起来,相应的端口是否有暴露

Public Key Retrieval is not allowed
在config-readwrite-splitting.yaml文件中,配置主机与从机的每个url后面加上allowPublicKeyRetrieval=true

MySQL5.6 (5.7-8) 基于shardingsphere5.1.1 Sharding-Proxy模式读写分离相关推荐

  1. sqlserver date类型和字符串比较_基于SQL Server数据库搭建主从复制实现读写分离实战演练...

    一.课程介绍 读写分离(主从同步)从字面意思就可以理解,就是把对数据库的读操作和写操作分离开.读写分离在网站发展初期可以一定程度上缓解读写并发时产生锁的问题,将读写压力分担到多台服务器上.读写分离的基 ...

  2. 开源分布式数据库中间件MyCat架构简介(二)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

    目录 前言 基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理 一.关于Mycat 二.Mycat 实现原理 三.MyCat 应用场景 四.MyCat 未来展望 五.Mycat 中相关概念 ...

  3. 开源分布式数据库中间件MyCat架构简介(一)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

    目录 前言 开源分布式数据库中间件MyCat架构简介--MyCat源起 一.数据库切分概述:OLTP和OLAP 二.关系型数据库和NoSQL数据库 三.关系型数据库和NoSQL数据库的特点及优缺点 1 ...

  4. 基于Multi Master MySQL(MMM)实现Mariadb10读写分离

    ----本文大纲 简介 资源配置 拓扑图 实现过程 ==================== 一.简介 MMM即Master-Master Replication Manager for MySQL( ...

  5. 基于amoeba实现mysql数据库的读写分离/负载均衡

    更多博文请关注:没有伞的孩子必须努力奔跑 (www.xuchanggang.cn) 一.Amoeba的简述:[来自百度百科]      Amoeba是一个以MySQL为底层数据存储,并对应用提供MyS ...

  6. Mysql基于Amoeba_读写分离搭架

    一.Amoeba简介 Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基 ...

  7. mysql 5.7配置多线程复制,MySQL5.7复制功能实战,基于事务的复制,多源复制和多线程复制配置...

    这篇是幕课网-MySQL5.7复制功能实战视频教程的学习笔记.http://www.imooc.com/learn/589 第1章 MySQL复制基础 MySQL是异步复制 采取针对特定用户的读写分离 ...

  8. 基于CentOS7,MySQL5.7的 读写分离

    基于CentOS7,MySQL5.7的 读写分离 一.读写分离 1.1 读写分离引入时机 大多数互联网业务中,往往读多写少,这时候数据库的读会首先成为数据库的瓶颈.如果我们已经优化了SQL,但是读依旧 ...

  9. MySQL5.6基于GTID同步复制,与如何实现MySQL负载均衡、读写分离。

    MySQL想必大家都不陌生,之前文章也有介绍同步复制与半同步复制,今天先来了解下什么是GTID. GTID(global transaction ID)全局事务ID,是由服务器的UUID+一段随机数事 ...

最新文章

  1. PTP4L命令手册(谷歌翻译)
  2. linux下实现dns服务器,实现Linux操作系统下DNS服务器的搭建
  3. 破解入门(六)-----实战“内存镜像法”脱壳
  4. 使用Arcgis进行画面(线)并计算大小(长度)。
  5. Ubuntu 21.04终端中文乱码和无法输入中文
  6. 开发者说PaddleOCR的.NET封装与应用部署
  7. jsr303 spring_使用Spring和JSR 303进行方法参数验证
  8. mysql 不能添加外键 1215_MySQL错误1215:无法添加外键约束
  9. 苹果笔记本电脑亮度无法调节_苹果MacBook AirM1评测:M1芯片给您不一样的体验
  10. 楼市信贷新政力度超市场预期 房企放风要涨价
  11. 老司机 iOS 周报 #23 | 2018-06-18
  12. 音乐播放类应用后台播放耗电评测报告 1
  13. 使用Axis2创建一个Web Service的客户端 - 子非鱼,安知鱼之乐? - CSDNBlog
  14. 发明专利申请流程具体步骤。
  15. 白话VPB(volume parameter block)
  16. JAVA NPE 是什么,空异常
  17. 技术人向顾问/管理者转型的推荐经典书35本
  18. 两台三菱PLC通过485通讯控制
  19. [Python][Selenium]浏览器无头模式
  20. 用winNTSetup安装win7(usb3.0)

热门文章

  1. #ifndef是什么意思
  2. 爬虫练习二:爬取智联招聘职位信息
  3. JavaScript 二维数组转一维数组
  4. 庆祝程序员节,入驻杭州云栖小镇
  5. python popen sqlplus_Python用subprocess的Popen来调用系统命令
  6. mysql中unsigned怎么用_MySQL数据类型:使用unsigned得注意事项
  7. webService简单实例
  8. ChatGPT Prompt工程浅谈
  9. Linux---Samba服务器配置
  10. 多多参谋:拼多多测款怎么测?拼多多测词怎么测?