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

在这里插入图片描述

🚀 ShardingSphere 🚀

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

🚀 ShardingSphere 🚀

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

🍔 目录

    • 🍀 一.ShardingSphere分库分表实战之MySQL主从同步原理
      • 🥦 1.1 主从复制的用途
      • 🥦 1.2 主从部署必要条件
      • 🥦 1.3 主从复制的原理
    • 🍀 二.ShardingSphere分库分表实战之MySQL主从集群搭建
      • 🥦 2.1 创建俩个MySQL服务
      • 🥦 2.2 主数据库上创建需要同步的数据库以及表
      • 🥦 2.3 修改主数据库的配置文件my.cnf
      • 🥦 2.4 修改从数据库的配置文件my.cnf
      • 🥦 2.5 登陆主数据上创建主从复制的账号
      • 🥦 2.6 数据库中查询表获取文件名MASTER_LOG_FILE和点位MASTER_LOG_POS
      • 🥦 2.7 从库登陆,从库向主库同步信息
      • 🥦 2.8 主库插入数据,从库查询信息
    • 🍀 三.MySQL集群主从同步启动后常见的错误
      • 🥦 3.1 解决方案1:
      • 🥦 3.2 解决方案2
    • 🍀 四.总结
    • 💬 五.共勉

🍀 一.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/bashmysql -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实现读写分离,敬请期待。

💬 五.共勉

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

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/6056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java并发编程学习笔记(一)线程的入门与创建

一、进程与线程 认识 程序由指令和数据组成,简单来说,进程可以视为程序的一个实例 大部分程序可以同时运行多个实例进程,例如记事本、画图、浏览器等少部分程序只能同时运行一个实例进程,例如QQ音乐、网易云音乐等 一个进程可以…

【C++进阶之路】适配器、反向迭代器、仿函数

文章目录 前言一、适配器①模拟实现栈②模拟实现对列 二、反向迭代器三、仿函数总结 前言 我们先来笼统的介绍一下今天的三个内容。 适配器——简单的理解就是复用,用已经实现的轮子,来继续实现某种功能。 反向迭代器——原理很简单,就是对…

笔记:NodeJS electron 打包时 ETIMEDOUT

第一个方法 如果是用 npm,在你的 cmd 中输入 npm config set ELECTRON_MIRROR https://npmmirror.com/mirrors/electron/如果用 yarn,就输入 yarn config set electron_mirror https://npmmirror.com/mirrors/electron/第二个方法 如果第一个方法不行…

摄影测量-共线方程、共面方程

1、共线方程 在摄影测量中,绝大多数的结算方法都是基于共线条件方程式的,如单片空间后方交会解法、像对空间前方交会解法、光束法区域网评查以及直接线性变换等。 2、共面方程 描述像片对内摄影基线以及同名光线位于同一平面的一种条件方程。在摄影测量…

深入探究 SOCKS5 代理:加强网络安全与高效爬虫的利器

一、 SOCKS5 协议简介 SOCKS5(Socket Secure 5)是 SOCKS 协议的最新版本,它允许客户端向代理服务器发送请求,并将数据传输到目标服务器。相比于旧版 SOCKS 协议,SOCKS5 提供了更强大的身份验证机制和数据加密功能&…

分表后mybatis-plus删除操作失效等问题处理

因为重构dao层,问题太多了,于是想着另起一个章节。 4 count的问题 使用count复用,不需要查询所有字段,否则会出现下面的错误 ### SQL: SELECT COUNT( t.id,t.company_id,t.user_id,t.bind_time,t.role_type,t.job_type,t.studen…

openSUSE leap 15.3安装mysql-community-server

openSUSE Software 下载"https://software.opensuse.org/ymp/home:bjoernv/15.3/mysql-community-server.ymp" wget "https://software.opensuse.org/ymp/home:bjoernv/15.3/mysql-community-server.ymp" 双击"mysql-community-server.ymp" 添…

【算法基础:搜索与图论】3.2 树与图的dfs和bfs

文章目录 例题846. 树的重心(深度优先遍历 / 树形DP)⭐⭐⭐⭐⭐🚹🚹🚹🚹🚹(重要!好题!)847. 图中点的层次 相关链接 要学会建树、建图的通用方法。…

s390x 架构docker安装mysql

由于 MySQL 官方未提供 s390x 架构镜像,所以在应用商店启用 MySQL 前,需要手动修改 MySQL 镜像版本 MySQL 5.7 下载 s390x 架构最新版本镜像 docker pull ibmcom/mysql-s390x:5.7.34将镜像重命名为 1Panel 应用商店中使用的 MySQL 版本 docker tag i…

逻辑回归概述

逻辑回归介绍 1. 逻辑回归的应用场景 逻辑回归(Logistic Regression)是机器学习中的 一种分类模型 ,逻辑回归是一种分类算法,虽然名字中带有回归。由于算法的简单和高效,在实际中应用非常广泛 广告点击率是否为垃圾邮件是否患病信用卡账单是否会违约 逻辑回归就是解决二…

【Matlab】基于遗传算法优化 BP 神经网络的数据回归预测(Excel可直接替换数据)

【Matlab】基于遗传算法优化 BP 神经网络的数据回归预测(Excel可直接替换数据) 1.模型原理2.文件结构3.Excel数据4.分块代码4.1 arithXover.m4.2 delta.m4.3 ga.m4.4 gabpEval.m4.5 initializega.m4.6 maxGenTerm.m4.7 nonUnifMutation.m4.8 normGeomSel…

org.springframework.web.client.RestTemplate 的使用

目录 前言使用配置具体使用 前言 后端难免会发送请求,大致分为两种请求:微服务之间的内部请求和系统之间的外部请求,org.springframework.web.client.RestTemplate对这两种请求都支持。 使用 配置 import org.springframework.cloud.clie…

为harbor仓库添加https,新增DigiCert 免费版SSL证书

完成效果: 前言:在本地搭建好docker的镜像仓库harbor后,当我们登录docker login时,会提示证书问题x509: cannot validate certificate 登录本地报错X509 无法登录仓库也无法上传和拉取镜像,虽然有本机的解决方法&…

300M的联通宽带,电脑直接连接光猫只有100M;电脑连接路由器,然后路由器连接光猫却有300M???

1. 现象 300M的联通宽带,用了小半年之后发现网络比以前满,通过https://www.speedtest.cn网站测试发现只有100M 2. 猜测 难道是联通这帮人,偷偷把我网速降到了100M??? 3. 排查过程 打电话让联通师傅上门排查…

Windows下YUICompress实现js、css混淆压缩

首先,我们针对Linux下的部分命令进行Windows系统的对应实现 ls————cmd /c dir/b rm————cmd /c del mv————cmd /c move pwd————cmd /c chdir 注:cmd /c是执行完命令后关闭命令行窗口、cmd /k是执行完命令后不关闭命令行窗口、cmd /c sta…

归并排序与计数排序

目录 一、归并排序 1.基本思想 2.归并排序的特性总结: 3.代码实现: 4.代码优化 : 二、计数排序(非比较排序) 1. 概念: 2.计数排序的特性总结: 3.代码实现: 一、归并排序 1.…

香农极限是如何影响光纤容量的

1 引言 上世纪末,DWDM技术开始在干线通信中使用并迅速普及。虽然当时DWDM系统的容量只有402.5G,但实验室中DWDM支持的波道数甚至超过了1000波,单波道速率也飙到了惊人的160G(超1000波和单波160G是两个独立事件)。人们普…

自定义类型:结构体进阶学习分享

自定义类型:结构体进阶学习分享 前言1 结构体的基础知识2 结构的声明3 特殊声明4 结构的自引用5 结构体变量的定义和初始化6 结构体内存对齐6.1 计算结构体大小相关笔试题(基于VS)笔试题一:笔试题二: 6.2 为什么存在内…

使用Kafka Streams开发流处理应用

使用Kafka Streams开发流处理应用 一、简介1.1 Kafka Streams定义1.2 Kafka Streams的优势1.3 Kafka Streams应用场景 二、环境搭建2.1 安装Kafka2.2 安装Kafka Streams2.3 构建Kafka集群 三、Kafka Streams编程API介绍3.1 Kafka Streams主要API3.2 应用程序的配置和参数3.3 To…

FFmpeg 命令行实现居中高清上下模糊播放效果

FFmpeg 命令行实现居中高清上下模糊播放效果。 1、16:9 的横屏原视频,以 16:9 竖屏上下模糊播放 以该效果播放视频的命令如下: ffplay -i horizontal_test_video_169.mp4 -vf \ "split[a][b]; \ [a]crop(ih/16*9):ih,scaleiw/10:-1,gblursigma5…