每日一记10】+第19天:终于学会了 MySQL 主从配置和读写分离(五)
  

伊利丹·怒风 1599

{{ttag.title}}
从库挂机了怎么恢复同步
哪儿有什么岁月静好,只不过是有人帮你顶住了锅而已。服务宕掉通常都在不经意间,一旦从库服务挂掉了怎么办。

在主服务的 binlog dump 线程将指定的 binlog 信息发给从服务时,除了日志内容,还包括本次发送内容在主服务端的 bin-log 日志文件名称以及位置信息。

从服务的 I/O 线程接收到信息后将日志内容写入realy-log 文件(mysql-relay-bin.xxxxxx)的末端,并将读取到的主服务端的 bin-log 的文件名和位置记录到 master-info 中(通过 show slave status 中的 Master_Info_File 字段可以看到 master.info 保存的位置),以便下一次读取时能告诉主服务从哪里开始同步。

从服务的 SQL 线程检测到 realy-log 新增了内容后,解析日志文件生成对应的 sql 语句,并应用这些 sql 到数据库,保证主从数据一致性。

所以,及时从库挂掉了,因为有 master.info 记录了上一次同步的位置,只要同步服务再次启动,那就可以从上次同步的位置继续增量同步了。

那话说主库宕了怎么办,这就是另一个悲伤的故事了,就没有从库挂掉这么简单了,如果马上启动那就是最好的解决办法。如果由于硬件或者比较棘手的问题导致没办法立即重启,那就要选一个从库升级为主库,选择的标准是数据最接近主库的,也就是最后一次同步时间最晚的。如果有可能(比如主服务只是数据库无法启动,但机器还在)还要到主服务上拉取最新的 bin-log 进行同步。最后进行一系列设置将选中的从库变更为主库配置。(就不展开说了,因为再展开就露馅儿了,我也不会)

ShardingSphere-JDBC 实现读写分离
主从分离之后,就要做系统的读写分离了,写操作走主节点,读操作走从节点。这就需要数据库中间件来帮忙了,现在比较流行的中间件有Atlas、Cobar、Mycat、Sharding-Sphere,具体选择哪个或者自研,要看各个公司的标准了。

Sharding-Sphere 包括 ShardingSphere-JDBC 和 ShardingSphere-Proxy。

ShardingSphere-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。

适用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC。
支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP 等。
支持任意实现 JDBC 规范的数据库,目前支持 MySQL,Oracle,SQLServer,PostgreSQL 以及任何遵循 SQL92 标准的数据库。
ShardingSphere-JDBC Architecture

ShardingSphere 当前版本是 4.x,官网地址:https://shardingsphere.apache.org/index_zh.html

接下来简单演示一下 ShardingSphere-JDBC + Spring Boot + MyBatis 实现简单的读写分离。

版本说明

JDK:1.8

Spring Boot:2.3.2.RELEASE (当前最新版本)

mybatis-spring-boot-starter:2.1.3 (当前最新版)

ShardingSphere-JDBC:4.1.1 (当前最新版)

打赏鼓励作者,期待更多好文!

打赏
2人已打赏

头像被屏蔽
新手741261 发表于 2020-8-27 21:18
  
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
新手780102 发表于 2020-8-27 21:25
  
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
新手031815 发表于 2020-8-28 21:29
  
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
新手031815 发表于 2020-8-29 22:05
  
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
新手780102 发表于 2020-8-29 22:15
  
提示: 作者被禁止或删除 内容自动屏蔽
新手456962 发表于 2020-8-30 11:28
  
感谢分享
yim 发表于 2021-4-20 11:10
  
发表新帖
热门标签
全部标签>
每日一问
【 社区to talk】
高手请过招
新版本体验
标准化排查
产品连连看
社区新周刊
GIF动图学习
功能体验
纪元平台
平台使用
信服课堂视频
技术笔记
安全效果
安装部署配置
网络基础知识
运维工具
排障笔记本
S豆商城资讯
答题自测
解决方案
VPN 对接
2023技术争霸赛专题
云化安全能力
关键解决方案
专家问答
设备维护
存储
迁移
秒懂零信任
文档捉虫
华北区交付直播
每周精选
西北区每日一问
产品解析
畅聊IT
技术圆桌
在线直播
MVP
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
用户认证
原创分享
sangfor周刊
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
资源访问
地址转换
虚拟机
产品预警公告
玩转零信任
技术争霸赛
「智能机器人」
追光者计划
卧龙计划
华北区拉练
天逸直播
以战代练
技术晨报
技术盲盒
山东区技术晨报
齐鲁TV
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
升级&主动服务
高频问题集锦
POC测试案例
全能先锋系列
专家说
热门活动
产品动态
行业实践

本版版主

461
248
13

发帖

粉丝

关注

本版达人

feeling

本周分享达人

新手29676...

本周提问达人