mysql主从shardingsphere分库分表
问题:
1. 公司的mysql主从复制方式怎么查看——这个命令在哪敲
2.公司扩容一个从的时候怎么做的?——
3.公司主从架构模式是什么样的?几主几从
4.公司的业务场景有木有要求写后立马查出数据的
mysql主从架构
mysql主从架构详解
mysql读写分离
mysql主从集群扩容&半同步复制
mysql主从架构的问题
1.mysql同步方式以及半同步复制问题
Q1:半同步复制能保证一定不丢数据吗?
A:不能,因为半同步复制是至少一个slave同步到了,才响应客户端,因此可能slave挂了,但这种可能性很小,且无法避免,所以不考虑
Q2:半同步复制的影响:
A:半同步复制要等slave响应,所以写数据的时候性能会有影响,效率会低一点
主从延迟问题
在高并发场景下,从库的数据一定会比主库慢一些,是有延时的。所以经常出现,刚写入主库的数据可能是读不到的,要过几十毫秒,甚至几百毫秒才能读取到。
压力测试 :
写请求1000/s-2000/s 大概有10 - 30ms左右的延迟。
写请求4000/s - 5000/s 大概有1 - 3秒左右的延迟。
如果主从延迟较为严重,有以下解决方案:
分库,将一个主库拆分为多个主库,每个主库的写并发就减少了几倍,此时主从延迟可以忽略不计。 (即减少binlog同步日志)
打开 MySQL 支持的并行复制,多个库并行复制。如果说某个库的写入并发就是特别高,单库写并发达到了 2000/s,并行复制还是没意义。
重写代码。插入数据时立马查询可能查不到。比如尽量避免插入后就马上读。
如果 强行要求 :必须插入后,立马要求就能查询到 ,有以下解决方案:
通过数据库中间件,设置读写直连主库。不推荐这种方法,这么搞导致读写分离的意义就丧失了。
如果基于有这样的业务要求。不要试图在数据库层解决并发的读操作问题,至少不要在主从架构的数据库层解决。要在数据库层之上架构一个redis这样的分布式缓存来解决,它是专门干这个的。其性能肯定远高于从备机读取数据。
2.1主从延时问题的原因以及解决办法part1
2.2主从延时问题的解决办法part2
2.3主从延迟原因
2.4主从延迟数据不一致解决方法
主从延迟的解决方案
shardingsphere分库分表
数据库分库分表思路
MySQL数据库之分库分表方案
多对多业务,数据库水平切分架构一次搞定
分库分表实战--- ShardingSphere实战
一般来说,在系统设计阶段就应该根据业务耦合松紧来确定垂直分库,垂直分表方案,在数据量及访问压力不是特别大的情况,首先考虑缓存、读写分离、索引技术等方案。若数据量极大,且持续增长,再考虑水平分库分表方案。
MySQL-如何分库分表?一看就懂
shardingsphere分片策略
ShardingSphere-JDBC 的4种分片策略
hint:代码写死指定sql访问哪个库表
inline:yml配置 表达式——数据分布均匀,但是扩展难
standard:类定义,自己写实现——可以让数据范围分布,扩展容易(如生成含有年份的id,去处年份部分来分布) & 逻辑再加一层id按照表达式的逻辑 分布 ,就能实现:扩展容易 & 分布均匀
complex:多个字段分库表
shardingsphere主键生成策略(spi可以自定义)
ShardingSphere-JDBC 的3种主键生成策略
主键:uuid、雪花、自定义spi、none(业务构造id,然后setid进去)
ShardingSphere的扩展点
分库分表带来的问题
很多SQL不支持、数据迁移、扩缩容、公共表、读写分离、配置往注册中心集中配置
分布式事务处理
shardingsphere源码
shardingsphere优化
内存限制模式(maxconnectionperquery大,每个连接都持有数据,一条条放到内存中,流失归并,用完一个结果,释放一个内存):OLAP,适用于实时分析,报表,吞吐量大——流失结果集
连接限制模式(所有结果都先放到内存中):效率高,试用于大事务——产生内存结果集(可能内存溢出)
区—ShardingSphere之分组group by过多消耗内存的问题
ShardingSphere官网操作指南补充和重点整理-数据分片-内核剖析(五)
maxconnectionperquery & 内存限制模式 & 归并模式——待解决
7. sharding-jdbc源码之group by结果合并(2)
数据库动态扩容缩容
考虑的问题:
2、两个库,四个表。要如何将数据分配均匀?
3、如何定制适合业务场景的数据分片策略?
Q:有哪些常用的数据分片策略?
取模分片、按时间范围分片、按业务要素 (如地区、前缀等)分片。。。。
取模分片:能够将数据分配得尽量的平均,但是不利于扩展。
范围分片:便于扩展但是他的数据分布又不够均匀。
A:是不是可以定制一种分片策略,将这两种分片策略结合起来?比如大 尺度上按范围分片,但是在每个数据范围内,使用取模分片。这种分片 策略要如何在ShardingSphere中实现?
2、旧数据处理方式
如果要在中途进行分库分表,要分为两个步骤:
1. 首先:要评估数据分片方案,对关键的SQL进行整理并分析。分库分表后,有很 多SQL是无法支持的,这些SQL一定要优先从业务中去掉。这个步骤很容易被忽略, 但是一定是必不可少的。有哪些SQL是ShardingSphere不支持的? 参见官网。
2. 然后:当你制定好了分库分表方案后,不要急于迁移旧数据。最好是在业务中对 SQL进行数据双写。即老数据库写一份,新的分片后的数据库也写一份。观察一段 时间,等业务稳定了之后,再考虑全部转移到分片后的新数据库中。这同样需要多 方定制ShardingSphere的分片策略,简单的inline是很难达到这个目的的。
3. 接下来:进行旧数据迁移时,可以采用ShardingProxy来协助进行数据转移。部 署同样分片策略的ShardingProxy,一方面可以在MySQL的客户端工具中快速验证 分片策略,另外可以使用sqoop、keetle等工具来协助进行数据转移。
分库分表带来的问题 定制主键生成策略
主键是分库分表中非常重要的业务要素,通常分库分表都会采用主键来作为分片 键,这个时候主键就不再只是用来提升查询效率了,还需要坚固数据分片的效率。 要如何定制高效的主键生成策略?
很多SQL不支持
例如MySQL里会配for each标签来执行批量SQL,原始数据库是支持的,但是分 库分表不支持。
查询的SQL比较多时,路由策略是否支持? 去官网上查一下分库分表的不支持项。
其他问题
数据迁移、扩缩容、公共表、读写分离、配置往注册中心集中配置
分布式事务处理
mysql主从shardingsphere分库分表相关推荐
- Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战
目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...
- MySQL数据库的分库分表方案
MySQL数据库的分库分表方案 一. 数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数 ...
- MySQL纯透明的分库分表技术还没有
MySQL纯透明的分库分表技术还没有 种树人 ./oneproxy --proxy-address=:3307 --admin-username=admin --admin-password=D033 ...
- 如何最大限度的使用数据库性能,全网最细节讲解缓存方案丨读写分离|连接池|缓存方案|mysql|缓存同步|分库分表
如何最大限度的使用数据库性能,全网最细节讲解缓存方案 视频讲解如下,点击观看: 如何最大限度的使用数据库性能,全网最细节讲解缓存方案丨读写分离|连接池|缓存方案|mysql|缓存同步|分库分表|c/c ...
- ShardingSphere分库分表(SpringBoot+mybatis+mysql)配置
一.什么是ShardingSphere 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务. 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增 ...
- 基于ShardingSphere分库分表
背景: 无论是数据库还是应用从最原始的单机架构开始,随着用户的增多,考虑到系统的高可用和越来越多的用户请求,我们开始使用主从架构,用户量和业务量进一步上升之后,微服务集群和数据库集群也就出现了,就应用 ...
- Springboot2.x +JPA 集成 Apache ShardingSphere 分库分表
分库分表背景: 数据库性能瓶颈:主要分为按照业务来划分或者按照数据量来划分. 拆分方式: 水平拆分(每个表的结构都一样):订单表数据量大,我们可以水平拆分 ,分成order表1.order表2.ord ...
- SpringBoot 2.x ShardingSphere分库分表实战
本文转载自微信公众号:李浩东的博客 一. 项目需求 在之前我做项目的时候,数据量比较大,单表千万级别的,需要分库分表,于是在网上搜索这方面的开源框架,最常见的就是mycat,sharding-sphe ...
- mysql多字段分库分表基因码_mysql数据库优化方案之分库分表,轻松解决亿级数据问题...
今天介绍下sharding-sphere,主要介绍他的特性,分库分表的技术的详解. (一)下载源码官网地址获取源码https://shardingsphere.apache.org/index_zh. ...
最新文章
- 北斗词卡(三):带你了解北斗相关的国际组织缩写
- git merge 回退_Git命令
- php 转码iconv,PHP iconv()函数转字符编码的问题(转)
- tp3 跨域_vue 跨域访问tp3接口,tp3 I()方法无法获取前端请求数据
- jstl中的日期格式化
- 配置centos环境
- Java基础:JDBC
- memcached命令
- Java 的下载安装教程
- 基于FPGA三大串行通信接口简单概述
- 闭包及候选键求解方法
- ipad协议更新非常稳定
- Cypress 自定义方法命令
- 北美中小学生实用学习网站推荐
- android多个按钮美化,Android开发学习系列(一)——Android按钮圆角美化
- python数据集处理
- 为何优秀的程序员不断离开?,字节跳动8年老Java面试官经验谈
- 百度云2017年春节假期服务公告
- ISCE文件格式及其含义
- 使用串口中断方式实现串口通信
热门文章
- 菜鸟PHP,自己曾经做过的php项目
- c语言汉诺塔动画程序,C语言实现的动画汉诺塔
- mysql 中间件 租户管理_多租户的设计与实现 - 《Gaea - MySQL 中间件》 - 书栈网 · BookStack...
- Spring Boot 原理解析—启动类包扫描原理
- 进入bios安装ubuntu
- git分支合并错误的解决办法
- 基于SSH开发九洲世纪医院预约挂号平台
- jeeplus绘制流程图
- AKH-0.66P低压保护用电流互感器(安科瑞-卓宋兰)
- l挡d挡切换_自动档汽车D档与L可以在行驶中切换吗?