ShardingSphere分库分表实战之MySQL主从集群搭建

《童虎学习笔记》16分钟ShardingSphere搭建MySQL分库分表 1 阅读详情

在这里插入图片描述

🚀 ShardingSphere 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 ShardingSphere 🚀

在这里插入图片描述
在这里插入图片描述

🍀 一.ShardingSphere分库分表实战之MySQL主从同步原理

读写分离是建立在MySQL主从复制基础之上实现的,所以必须先搭建MySQL的主从复制架构。

🥦 1.1 主从复制的用途

  • 实时灾备,用于故障切换

  • 读写分离,提供查询服务

  • 备份,避免影响业务

🥦 1.2 主从部署必要条件

  • 主库开启binlog日志(设置log-bin参数)
  • 主从server-id不同
  • 从库服务器能连通主库

🥦 1.3 主从复制的原理

  • Mysql 中有一种日志叫做 bin 日志(二进制日志)。这个日志会记录下所有修改了数据库的SQL 语句(insert,update,delete,create/alter/drop table, grant 等等)。
  • 主从复制的原理其实就是把主服务器上的 bin 日志复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

在这里插入图片描述

  1. 主库db的更新事件(update、insert、delete)被写到binlog
  2. 主库创建一个binlog dump thread,把binlog的内容发送到从库
  3. 从库启动并发起连接,连接到主库
  4. 从库启动之后,创建一个I/O线程,读取主库传过来的binlog内容并写入到relay log
  5. 从库启动之后,创建一个SQL线程,从relay log里面读取内容,执行读取到的更新事件,将更新内容写入到slave的db

🍀 二.ShardingSphere分库分表实战之MySQL主从集群搭建

🥦 2.1 创建俩个MySQL服务

如果你看过了之前的文章,并且都进行了实操,那么这个步骤你肯定完成了,如果你是刚刚学习,那么也不要紧,可以先去学习之前的文章,再来学习就会更加容易。

🥦 2.2 主数据库上创建需要同步的数据库以及表

-- 创建数据库
CREATE DATABASE test CHARACTER SET utf8;

-- 创建表
CREATE TABLE user (
  id INT(11) PRIMARY KEY AUTO_INCREMENT,
  NAME VARCHAR(20) DEFAULT NULL,
  age INT(11) DEFAULT NULL
); 

在这里插入图片描述

🥦 2.3 修改主数据库的配置文件my.cnf

直接在原来的配置文件内容下方添加即可!

# ...
# 省略原来的配置内容
# .....


# Master
# 开启日志
log-bin=mysql-bin
# 日志格式按行同步
binlog-format=ROW
# 设置服务id,主从不能一致
server-id=1
# 设置需要同步的数据库
binlog-do-db=test
# 设置忽略系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
  • server-id=1 中的1可以任定义,只要是唯一的就行。
  • log-bin=mysql-bin 表示启用binlog功能,并制定二进制日志的存储目录,
  • binlog-do-db=test 是表示只备份test 数据库。
  • binlog_ignore_db=mysql 表示忽略备份mysql。
  • 不加binlog-do-db和binlog_ignore_db,那就表示备份全部数据库。

在这里插入图片描述

🥦 2.4 修改从数据库的配置文件my.cnf

同理, 配置我们从数据库的配置文件,最重要的就是将此时从库的server-id改为2!

# ...
# 省略原来的配置内容
# .....


# Slave
# 开启日志
log-bin=mysql-bin
# 日志格式按行同步
binlog-format=ROW
# 设置服务id,主从不能一致
server-id=2
# 设置需要同步的数据库
binlog-do-db=test
# 设置忽略系统库同步
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
  • server-id=2 中的1可以任定义,只要是唯一的就行。
  • log-bin=mysql-bin 表示启用binlog功能,并制定二进制日志的存储目录,
  • binlog-do-db=test 是表示只备份test 数据库。
  • binlog_ignore_db=mysql 表示忽略备份mysql。
  • 不加binlog-do-db和binlog_ignore_db,那就表示备份全部数据库。

在这里插入图片描述

🥦 2.5 登陆主数据上创建主从复制的账号

在执行下面命令的之前,俩个服务器上重启我们的MySQL服务。

docker restart mysql  

进入mysql容器内容,登陆mysql

docker exec -it mysql /bin/bash

mysql -uroot -proot

在这里插入图片描述
创建一个允许从数据库来访问的用户账号

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.10.133' IDENTIFIED BY '123456';

在这里插入图片描述
查询验证:
在这里插入图片描述

🥦 2.6 数据库中查询表获取文件名MASTER_LOG_FILE和点位MASTER_LOG_POS

执行如下的命令:

show master status \G;

在这里插入图片描述

🥦 2.7 从库登陆,从库向主库同步信息

进入容器,登陆mysql在这里插入图片描述

停止同步

stop slave;

在这里插入图片描述

修改从库指向到主库,使用上一步记录的文件名以及位点

CHANGE MASTER TO 
master_host='192.168.10.132',
master_port=3306,
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=154,
MASTER_CONNECT_RETRY=10;

在这里插入图片描述

启动同步

start slave;

在这里插入图片描述

查看运行状态

show slave status \G;

在这里插入图片描述

🥦 2.8 主库插入数据,从库查询信息

主库插入数据:

在这里插入图片描述

从库中查询对应的数据
在这里插入图片描述

🍀 三.MySQL集群主从同步启动后常见的错误

常见错误是Slave_IO_Running: No 或者 Connecting 的情况
在这里插入图片描述

🥦 3.1 解决方案1:

  1. 首先停掉Slave服务
stop slave;
  1. 到主服务器上查看主机状态, 记录File和Position对应的值
SHOW MASTER STATUS;

在这里插入图片描述

  1. 然后到slave服务器上执行手动同步:
CHANGE MASTER TO 
master_host='192.168.10.132',
master_port=3306,
master_user='slave',
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=1181,
MASTER_CONNECT_RETRY=10;

🥦 3.2 解决方案2

  1. 程序可能在slave上进行了写操作;
  2. 也可能是slave机器重起后,事务回滚造成的.;
  3. 一般是事务回滚造成的,解决办法;
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave;

🍀 四.总结

本篇文章主要讲解了ShardingSphere分库分表实战之MySQL主从集群搭建,实操过程非常重要,大家一定要动手亲自实践一下,必须掌握。下节预告,ShardingSphere分库分表实战之Sharding-JDBC实现读写分离,敬请期待。

💬 五.共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

shardingsphere分库分表跨库访问原理 分片规则:根据分片键和分片算法,将数据分片到不同的数据库和表。SQL 路由:根据分片规则,ShardingSphere 会将 SQL 路由到具体的库或表。SQL 改写:ShardingSphere 会对 SQL 进行改写,使其指向正确的分片。并行执行:对于跨库查询,ShardingSphere 会将 SQL 并行分发到多个数据库执行。结果归并:ShardingSphere 会将多个库的查询结果进行合并,返回给应用层。事务管理:ShardingSphere 支持多种事务机制,保证跨库操作的一致性。 阅读详情

相关推荐

ShardingJDBC 分库分表详解

1、ShardingSphere概述1.1、ShardingSphere概述主要来说就以下三点:1.2、ShardingSphere-JDBC概述定位为轻量级 Java 框架,和spring、mybatis一样,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。1.3、ShardingSphere-Proxy概述定位为透明化的数据库代理端,提供封装了数据库二进制协

目标检测专栏持续更新中,改进YOLO系列通用,适用v5、v7、v8、所有博客均是团队原创博客,所有文章禁止转载,违者必究。 3247

ShardingSphere:SpringBoot2+MybatisPlus3+UI不分库只分表

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈。它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成,shardingSphere定位为关系型数据库中间件。 Sharding-JDBCSharding-JDBC是Sharding-Sphere的第一个产品,也是Sharding-Sphere的前身,是当当网开源的一个产品。定位为轻量级的Java框架,在Java的JDBC层提供额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。他们均提供标准化的数据分片、读写分离、柔性事务和数据治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。Sharding-JDBC可以通过Java,YAML,Spring命名空间和Spring Boot Starter四种方式配置,开发者可根据场景选择适合的配置方式。课程特色 本章节以尽量短的时间,为使用者提供最简单的ShardingSphere的快速入门。课程说明该课程属于系列课程,分为读写分离,分库不分表,不分库分表,分库分表,读写分离+分库分表共5个回合。本课程属于其中一个回合,请各位小哥哥们注意,课程的标题哦~

使用 ShardingSphere 实操MySQL分库分表实战

ShardingSphere 分库分表 什么是 ShardingSphere Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产品组成。 它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。 一套开源的分布式数据库中间件解决方案。 有三个产品:JDBC、Proxy、Sidecar。 什

u012497653的博客 5136

ShardingSphere分库分表实战与核心原理

ShardingSphere分库分表实战与核心原理

yemuxiaweiliang的博客 5808

数据库分库分表:从ShardingSphere到MyCat实战

ShardingSphere是Apache旗下的分布式数据库中间件,旨在提供透明化的数据分片、读写分离和分布式事务等能力。它支持多种数据库类型,包括MySQL、PostgreSQL、Oracle等,并提供了Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar三种部署模式。ShardingSphere和MyCat都是优秀的分库分表中间件,各自具有独特的优势和适用场景。在选择时,开发者应根据具体的业务需求、技术栈和团队熟悉度来决定。

shejizuopin的博客 1306

ShardingSphere分库分表教程 | Spring Boot 34

一、分库分表 1、随着时间和业务发展,数据库数据量不可控,造成表中数据越来越多,此时再进行CRUD操作的话,会造成很大的性能问题,比如查询实时数据,表数据达到了千万级别,要求一分钟查询一次,但你一个select就要耗时2两分钟才能执行完,这岂不是很尴尬。 2、分库分表就是为了解决由于数据量过大而导致数据库性能降低的问题,将原来独立的数据库拆分成若干数据库组成 ,将数据大表拆分成若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提升数据库性能的目的。 3、性能解决方案 方案1 通过提升

学Java,找哪吒 1万+

Mysql主从集群搭建+分库分表+ShardingSphere(实战)

什么是 ShardingSphere介绍Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。它站在数据库的上层视角,关注它们之间的协作多于数据库自身。主要功能一、数据库增强与分布式能力。

weixin_61558375的博客 1775

【技术分享】ArcGIS Pro底图色彩优化实战:从DEM到山体阴影的进阶调色技巧

本文深入探讨了在ArcGIS Pro中优化地形底图色彩的进阶技巧。通过分析DEM与山体阴影的直方图,详细讲解了如何运用图层混合、亮度、对比度及伽马值等核心参数进行精细化调色,从而将灰暗平淡的地图转化为层次分明、视觉美观的专业成果。

5b6n7m8的博客 758

ShardingSphere系列一(MySQL主从架构及读写分离实战(搭建主从集群、MySQL高可用方案MHA、分库分表概念))

这个工具专门用于监控主库的状态,当发现master节点故障时,会提升其中拥有新数据的slave节点成为新的master节点,在此期间,MHA会通过其他从节点获取额外的信息来避免数据一致性方面的问题。整个服务的性能是会有所下降的。在基于GTID的复制中,首先从服务器会告诉主服务器已经在从服务器执行完了哪些事务的GTID值,然后主库会有把所有没有在从库上执行的事务,发送到从库上进行执行,并且使用GTID的复制可以保证同一个事务只在指定的从库上执行一次,这样可以避免由于偏移量的问题造成数据不一致。

xingze的博客 1821

i茅台APP加密参数逆向分析:MT-Device-ID与mt-v生成算法

在移动应用安全领域,参数加密是防止API滥用的重要手段。通过对通信协议的逆向分析,可以揭示加密参数的生成原理,这对理解移动应用安全机制具有重要意义。以i茅台APP为例,其关键接口使用了MT-Device-ID和mt-v两个加密参数,前者基于设备硬件信息生成,后者则通过动态签名机制确保请求时效性。这类技术广泛应用于电商、金融等需要高安全性的场景。通过抓包工具和逆向工程手段,可以还原出从设备指纹生成到动态签名的完整技术链条,其中涉及MD5、SHA256等常见哈希算法的应用。掌握这些加密参数的生成逻辑,不仅有助于

weixin_28568819的博客 320

头歌操作系统 课后作业4.3:段页式内存管理 答案 无解析

头歌操作系统 课后作业4.3:段页式内存管理 答案 无解析

kercii的博客 7335

【分库分表】基于mysql+shardingSphere的分库分表技术

基于shardingSphere,聊一聊分库分表

BugMan的博客 5382

物联网开发笔记(34)- 使用Micropython开发ESP32开发板之控制步进电机(28BYJ-48)

使用Micropython开发ESP32开发板之控制步进电机(28BYJ-48)

zhusongziye的博客 1万+

ShardingSphere分库分表1-mysql生产环境高可用实战

文章目录一、实验目的与环境二、基础环境介绍三、搭建主从集群1、理论基础2、同步的原理3、搭建主从集群3.1 配置master主服务器3.2 配置slave从服务3.3 主从集群测试3.4 集群搭建扩展:3.5、GTID同步集群4、集群扩容5、半同步复制1、理解半同步复制2、搭建半同步复制集群6、主从架构的数据延迟问题:四、MySQL的高可用方案--了解1、MMM2、MHA3、MGR五、分库分表1、分库分表有什么用2、分库分表的方式3、分库分表的缺点4、什么时候需要分库分表?5、常见的分库分表组件 一、实验目

roykingw的专栏 2248

YOLO11改进-注意力-引入多尺度注意力聚合(MSAA)模块

对来自backbone的特征进行细化处理。通过空间和通道两个路径的操作,增强了空间和通道方面的特征信息,使得输出的特征图在空间和通道维度上都更加优质。1. 在空间细化路径中,通过对不同核大小的卷积进行求和以及一系列的空间特征聚合操作,实现了多尺度空间信息的融合。2. 在通道聚合路径中,通过全局平均池化、卷积和激活等操作生成通道注意力图,并与空间细化后的图相结合,实现了通道维度上的多尺度信息融合。

qq_64693987的博客 4675

Thingsboard PE智慧运维仪表板实例(一)【智慧排口截污实例】

以该实际落地项目为案例,跟着我一起搭建智慧运维大屏!社区版和专业版都通用。本文是致力于快速搭建,所以不会详细去讲Thingsboard的知识点,只讲如何配置和使用部件。

weixin_67440240的博客 1720

ShardingSphere分库分表教程

业务代码无需感知底层分片逻辑。

qq_44431362的博客 2208

【肌电处理】肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率【含Matlab源码 3386期】

肌电信号EMG积分肌电值+均方根值+中值频率+平均功率频率 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 820

ShardingSphere 分库分表技术实现与实战案例

本文介绍了使用Apache ShardingSphere实现分库分表的技术方案。针对电商平台订单、用户等海量数据表,设计了按用户ID哈希分库、按时间分表的分片策略,确保数据均匀分布和高效查询。文章详细讲解了ShardingSphere的核心原理(分片路由、SQL改写等)和实战步骤,包括环境准备、依赖配置、分片规则定义等。重点展示了订单表的分库分表配置示例,采用Snowflake算法生成分布式ID,并通过YAML文件定义多数据源和分片规则。

Mr_hwt_123的博客 1320

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【分库分表ShardingSphere】

文章目录一、ShardingSphere二、ShardingJDBC实战1、核心概念2、测试项目介绍3、快速实战4、ShardingJDBC的分片算法NoneShardingStrategyInlineShardingStrategyStandardShardingStrategyComplexShardingStrategyHintShardingStrategy5、ShardingSphere的SQL使用限制6、分库分表带来的问题7、分库分表方案设计实战三、内核剖析解析引擎路由引擎改写引擎执行引擎归并引

我是Java程序员廖志伟,感谢朋友们的支持! 6011

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ShardingSphere分库分表

ShardingSphere分库分表学习

新入坑的嵌入式的小白 4654

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MySQL分库分表之ShardingSphere实战

MySQL分库分表之ShardingSphere实战

丿涛哥哥的博客 1304

MySQL 分库分表实践:Spring Boot + ShardingSphere

至此,我们就完成 Spring Boot + ShardingSphere 的 MySQL 分库分表实践。商品订单的分库分表是一个很典型的案例,也是工作中遇到的常见场景。当然,实际业务也可能遇到不同的分库分表策略,比如按照日期分库分表的,不过这些都可以编写分片算法来解决。实际上,如果对 MySQL 分库分表理论基础,和 ShardingSphere 的原理及核心概念有一定的学习了解,业务开发中遇到的分库分表都相信可以很轻松地应对。

sc35262的博客 1650
上一篇: ShardingSphere分库分表实战之读写分离原理解析
下一篇: Sharding-JDBC实现读写分离
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值