当前位置: 首页 > 网络应用技术

sharding-jdbc意识到了读物,编写分离 +数据库平板电脑,这是写得很好的!

时间:2023-03-08 02:07:44 网络应用技术

  shardingsphere-jdbc定位为轻量级Java框架,这是Java的JDBC层提供的附加服务。它使用客户端直接连接到数据库,以JAR软件包的形式提供服务。它可以理解为JDBC驱动程序的增强版本。它与JDBC和各种ORM框架完全兼容

  1)Docker配置主服务器的MySQL主副本1)创建创建主服务器所需的目录

  2)定义主服务器配置文件

  3)创建并启动MySQL主服务

  4)添加了用于使用服务器的主数据副本的读者

  5)创建从服务器所需的目录,编辑配置文件

  6)从服务器创建并运行MySQL

  7)配置从服务器连接主服务器的信息

  主服务器上的第一个视图,两个参数,然后切换到服务器的主服务器的连接信息的设置

  主服务执行:

  Docker查看主服务器容器的IP地址

  从服务器执行:

  8)从服务器启动I/O线程和SQL线程

  slave_io_running:是的,slave_sql_running:是的,意味着开始成功

  2)审查BINLOG和REDO LOG 1)REDO LOG(RE -RE -LOG)

  InnoDB首先将重做登录放入重做日志缓冲区,然后将其刷新为以一定频率的重做日志文件

  在以下三种情况下,重做日志缓冲区被刷新到重做日志文件:

  WAL技术经常在mysql中说,全名是前日志写的,也就是说,当交易提交交易时,首先编写重做日志,然后修改页面。已更新,InnoDB将首先在重做日志中编写记录,并更新缓冲池的页面。此时

  缓冲池是物理页面的缓存。InnoDB的任何修改操作将在缓冲池的页面上执行。然后,此页面将被标记为肮脏的页面,并放置在特殊的齐平列表中。将来将这些页面进入磁盘阶段

  InnoDB的重做日志是固定尺寸。例如,可以将其配置为配置有4个文件。每个文件的大小为1GB,用于循环中。它是从一开始就写的。

  写入POS是当前记录的位置。写作时写作,并在文件末尾写入后返回到0个文件的开头3.检查点是要删除的位置,然后将其推回并向后循环。在删除记录之前,应将记录更新到数据文件

  写入POS和检查点之间的空部分可用于记录新操作。如果写入pos被检查点捕获,您此时无法执行新的更新,您需要停止并擦除一些记录,然后推送检查点

  当数据库停机时,数据库无需偿还所有日志,因为检查点的先前页面已刷新回到磁盘,并且只需要在检查点后还原重做日志,从而缩短了恢复恢复时间

  如果缓冲池不够,则根据LRU算法溢出了最近最小使用的最新页面,如果此页面是肮脏的页面,则需要强制检查点以将脏页刷新回到磁盘上

  2)BINLOG(存档日志)

  整个MySQL有两部分:一个是服务器层,主要是在MySQL的功能级别上执行。另一个是发动机层,负责存储相关事项的具体问题。REDO日志是Innodb引擎中的唯一日志,服务器层也有其自己的日志,称为Binlog

  BINLOG记录了所有操作,以执行MySQL数据库,不包括Select和Show等操作。主要角色是使用数据库的主要消耗和数据增量恢复。

  当使用mySqlDump备份时,它只能在一段时间内进行全面准备,但是如果数据库服务器在备份后失败,则此时将使用它

  Binlog格式有三种类型:语句,行,混合

  3)重做日志和Binlog日志之间的区别

  4)提交两个阶段

  执行此更新语句时,执行器和InnoDB引擎的内部过程:

  更新语句的执行流程图如下。图中的浅色框在InnoDB内执行。深色框表示它是在表演者中执行的

  重做日志的写作被删除为两个步骤:准备和提交,这是两个阶段提交

  3)MySQL的原则

  从库B和主库A. A.主库中有一个线程,该线程是主库a内部的一个线程,该线程专门用于服务于库B的长时间。交易日志的完整过程如下:

  由于引入了多线程复制方案,SQL线程已演变为多个线程

  主和副本并非实时同步,而是异步的真实时间 - 延迟延迟中间的主要和从属服务之间的执行。如果主服务器承受巨大压力,则可能导致mainstay服务器延迟大型

  不会引入春季启动基础知识。推荐本实际教程:https://www.javastack.cn/categories/spring-boot/

  1)新的Springboot项目并引入相关依赖性

  2)application.properties配置文件

  3)创建T_USER表

  4)定义控制器,映射器,实体

  5)验证

  启动日志中的三个数据源已成功初始化:

  输入DS1的主要节点

  该呼叫已输入,直到DS2,DS3节点和查询输入

  1)拆除分区表级别:同一表的数据被拆除为不同库的不同表。您可以在时间,区域或某个业务密钥维度上分开,最后通过路由访问特定数据。分裂后一致

  垂直拆分:将一个带有许多字段的表拆分为多个表或多个库。每个库表的结构都不同,每个库表都包含一些字段。通常,可以根据业务维度进行分配。例如,可以将订单表分为订单,订单支持,订单地址,订单产品,订单扩展等;将字段删除到一个表中,80%的冷场被删除到另一个表格

  2)也有一个非停滞数据库数据库数据库的过程。

  1)逻辑表用户数据按照订单ID%2分为两个表,即:T_ORDER0和T_ORDER1。逻辑表名称为:t_order

  大多数数据源都是同一张表:

  不同的数据源表:

  单库部门表:

  所有手动指定:

  2)内联碎裂策略

  上面的配置通过user_id%2确定特定数据源,并确定订单_id%2的特定表

  使用数据源DS0,使用T_ORDER1,插入语句是数据源DS0 T_ORDER1表的最终操作。

  3)分布式主密钥配置sharding-jdbc可以配置分布式的主键以生成策略。默认情况下使用雪花来生成64位长整数数据,并支持UUID方法

  4)实现数据库表和表的内联策略:

  执行1000W用户数据的数据库,并操作用户表的数据以及数据库的操作。按时存储在T_USER1,甚至T_USER0中的年龄率,性别奇数数字存储在DS1,偶数DS0中

  表结构:

  两个数据库都包括T_USER0和T_USER1两个表

  application.properties:

  不会引入春季启动基础知识。推荐本实际教程:https://www.javastack.cn/categories/spring-boot/

  测试类:

  参考文档:

  https://shardingsphere.apache.org/document/current/crent/cn/overview/

  https://www.bilibili.com/video/bv1ei4y1k7dn

  原始链接:https://blog.csdn.net/qq_40378034/article/details/115264837