问题:

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分库分表相关推荐

  1. Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战

    目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...

  2. MySQL数据库的分库分表方案

    MySQL数据库的分库分表方案 一. 数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数 ...

  3. MySQL纯透明的分库分表技术还没有

    MySQL纯透明的分库分表技术还没有 种树人 ./oneproxy --proxy-address=:3307 --admin-username=admin --admin-password=D033 ...

  4. 如何最大限度的使用数据库性能,全网最细节讲解缓存方案丨读写分离|连接池|缓存方案|mysql|缓存同步|分库分表

    如何最大限度的使用数据库性能,全网最细节讲解缓存方案 视频讲解如下,点击观看: 如何最大限度的使用数据库性能,全网最细节讲解缓存方案丨读写分离|连接池|缓存方案|mysql|缓存同步|分库分表|c/c ...

  5. ShardingSphere分库分表(SpringBoot+mybatis+mysql)配置

    一.什么是ShardingSphere 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务. 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增 ...

  6. 基于ShardingSphere分库分表

    背景: 无论是数据库还是应用从最原始的单机架构开始,随着用户的增多,考虑到系统的高可用和越来越多的用户请求,我们开始使用主从架构,用户量和业务量进一步上升之后,微服务集群和数据库集群也就出现了,就应用 ...

  7. Springboot2.x +JPA 集成 Apache ShardingSphere 分库分表

    分库分表背景: 数据库性能瓶颈:主要分为按照业务来划分或者按照数据量来划分. 拆分方式: 水平拆分(每个表的结构都一样):订单表数据量大,我们可以水平拆分 ,分成order表1.order表2.ord ...

  8. SpringBoot 2.x ShardingSphere分库分表实战

    本文转载自微信公众号:李浩东的博客 一. 项目需求 在之前我做项目的时候,数据量比较大,单表千万级别的,需要分库分表,于是在网上搜索这方面的开源框架,最常见的就是mycat,sharding-sphe ...

  9. mysql多字段分库分表基因码_mysql数据库优化方案之分库分表,轻松解决亿级数据问题...

    今天介绍下sharding-sphere,主要介绍他的特性,分库分表的技术的详解. (一)下载源码官网地址获取源码https://shardingsphere.apache.org/index_zh. ...

最新文章

  1. 北斗词卡(三):带你了解北斗相关的国际组织缩写
  2. git merge 回退_Git命令
  3. php 转码iconv,PHP iconv()函数转字符编码的问题(转)
  4. tp3 跨域_vue 跨域访问tp3接口,tp3 I()方法无法获取前端请求数据
  5. jstl中的日期格式化
  6. 配置centos环境
  7. Java基础:JDBC
  8. memcached命令
  9. Java 的下载安装教程
  10. 基于FPGA三大串行通信接口简单概述
  11. 闭包及候选键求解方法
  12. ipad协议更新非常稳定
  13. Cypress 自定义方法命令
  14. 北美中小学生实用学习网站推荐
  15. android多个按钮美化,Android开发学习系列(一)——Android按钮圆角美化
  16. python数据集处理
  17. 为何优秀的程序员不断离开?,字节跳动8年老Java面试官经验谈
  18. 百度云2017年春节假期服务公告
  19. ISCE文件格式及其含义
  20. 使用串口中断方式实现串口通信

热门文章

  1. 菜鸟PHP,自己曾经做过的php项目
  2. c语言汉诺塔动画程序,C语言实现的动画汉诺塔
  3. mysql 中间件 租户管理_多租户的设计与实现 - 《Gaea - MySQL 中间件》 - 书栈网 · BookStack...
  4. Spring Boot 原理解析—启动类包扫描原理
  5. 进入bios安装ubuntu
  6. git分支合并错误的解决办法
  7. 基于SSH开发九洲世纪医院预约挂号平台
  8. jeeplus绘制流程图
  9. AKH-0.66P低压保护用电流互感器(安科瑞-卓宋兰)
  10. l挡d挡切换_自动档汽车D档与L可以在行驶中切换吗?