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++进阶之路】适配器、反向迭代器、仿函数

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

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

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

分表后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. 图中点的层次 相关链接 要学会建树、建图的通用方法。…

【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…

为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 为什么存在内…

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…

深度理解 Spring AOP

一、什么是AOP(面向切面编程)?🍉 AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式 和运行期 动态代理 实现程序功能的统一维护的一种技术。 AOP (面向切面编程)是 OOP&a…

代码随想录额外题目| 数组02 ●189旋转数组 ●724寻找数组中心索引

#189旋转数组 很快写出来但是用了个新数组&#xff0c;不好 void rotate(vector<int>& nums, int k) {vector<int> res(nums.size(),0);for(int i0;i<nums.size();i){int newiik;if(newi>nums.size()-1) newinewi%nums.size();res[newi]nums[i];}numsr…

vue组件(个人学习笔记三)

目录 友情提醒第一章、vue的组件1.1&#xff09;什么是SPA应用1.2&#xff09;vue的组件简介1.3&#xff09;vue工程中的main.js文件 第二章、Vue组件的使用2.1&#xff09;一般组件的自定义2.2&#xff09;注册组件&#xff1a;全局注册和局部注册2.2.1&#xff09;全局注册&a…

和chatgpt学架构04-路由开发

目录 1 什么是路由2 如何设置路由2.1 安装依赖2.2 创建路由文件2.3 创建首页2.4 编写HomePage2.5 更新路由配置2.6 让路由生效 3 测试总结 要想使用vue实现页面的灵活跳转&#xff0c;其中路由配置是必不可少的&#xff0c;我们在做开发的时候&#xff0c;先需要了解知识点&…

Vue--》打造个性化医疗服务的医院预约系统(二)

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…

基于Python+多层RNN+Tensorflow藏头诗与歌词智能生成-深度学习算法应用(含全部工程源码)+训练数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境Tensorflow 环境PyCharm环境 模块实现古诗生成1. 数据预处理2. 模型构建3. 模型训练及保存4. 使用模型生成古诗5. 产生藏头诗6. 用词云展示生成的古诗 歌词生成1. 数据预处理2. 模型构建3. 模型训练并保存4. 生成…