MySQL(主从、半同步、组复制、MHA高可用)

news2024/12/22 20:17:31

文章目录

  • 一、MySQL源码编译以及初始化
  • 二、mysql主从复制、半同步
    • MySQL组复制
    • MySQL读写分离
    • MHA高可用


一、MySQL源码编译以及初始化

源码编译使用cmake,所以要提前安装cmake,完成之后make install即可
这里要创建mysql用户,以及用普通用户方式初始化
在这里插入图片描述
启动mysql之后我们就可以查看到3306端口;我们还需要进行安全初始化,也就是对mysql进行一些设置以及密码的修改等
在这里插入图片描述
最终使用新设置的密码成功登录数据库;
在这里插入图片描述

二、mysql主从复制、半同步

首先我们新开一台主机,作为主从复制的从机,mysql的相关配置文件都可以直接从主机上拷贝过去,然后我们在master端上启用二进制日志和主从,并且创建了用户名和密码;
在这里插入图片描述
但是主从复制的是二进制日志,所以它们的基本配置应该是相同的,不然也不会复制成功;所以如果之前在master端对数据库进行过操作,就应该现将数据库中的数据拷贝出来并且复制到其他从机上,再在从机上进行数据的导入,以此来保证数据库的基本配置相同
我们在master端在表中插入数据,发现从机中自动进行了相同的操作,实现了主从复制
在这里插入图片描述
主从复制的原理:master端开启二进制日志之后,就会将所有操作保存下来,slave端首先进行信息认证,然后会通过io线程将master端的二进制日志中保存的操作进行读取并保存至中继日志,进而保存至磁盘;SQL线程会对这些二进制命令进行写操作,即将与master端相同的操作在slave端进行一遍。
当然,主从复制一定会有延迟

基于gtid实现mysql的主从

  • 保证同一个事务在某slave上绝对只执行一次,没有执行过的gtid事务总是会被执行。
  • 不用像传统复制那样保证binlog的坐标准确,因为根本不需要binlog以及坐标。
  • 故障转移到新的master的时候很方便,简化了很多任务。
  • 很容易判断master和slave的数据是否一致。只要master上提交的事务在slave上也提交了,那么一定是一致的。

使用gtid方式实现主从复制也便于实现半同步,由于主从是异步的,如果在数据传输的过程中出现断电等情况,可能slave端无法同步数据,但是半同步的方式就不存在这个问题

设置完半同步方式后,再进行数据的master端写入,也是能正常同步,并且我们可以通过SHOW STATUS LIKE ‘Rpl_semi_sync%’;命令查看到有一条命令成功通过半同步方式进行同步,以及有几个slave端等等信息

在这里插入图片描述
在mysql5.7之后使用AFTER_SYNC,这才保证数据库的强一致性;因为这是在io写入数据并返回ack之后master端才会提交引擎,这样就保证了每个slave端的数据的完全同步
我们在生产环境会将等待时间设置为无穷大,不然超过等待时间就会自动切换至异步,如果我们此时停掉slave端的io线程,master端添加数据就会处于一直等待的过程中,直到收到ack回应(这也保证了数据的无损)

MySQL组复制

我们做组复制的时候,需要至少三台主机,多主复制,也就是每一台主机都可以是master或者slave;也会允许其中最多一台主机出现故障;在做组复制之前我们要将mysql重新初始化,然后进入数据库并修改密码,但是我们在数据库中创建用户并授权之前要先关闭二进制日志,否则可能会影响数据的同步。
三台主机上的配置基本都一致,唯一区别的就是my.ini中的server id以及本机名要变,完成之后,我们在任意一台主机的数据库进行操作,其他主机都会同步数据;

MySQL读写分离

做读写分离的原因
数据库写入效率要低于读取效率,一般系统中数据的读取频率高于写入频率,单个数据库实例在写入的时候会影响读取性能,这是做读写分离的原因

mysql读写分离的基础
基于主从复制,通过路由的方式使应用对数据库的写请求只在master端进行,读在slave端

可以使用mysql proxy的方式实现读写分离

MHA高可用

MHA在线切换大概过程:
1.检测复制设置和确定当前主服务器
2.确定新的主服务器
3.阻塞写入当前主服务器
4.等待所有从服务器赶上复制
5.授予写入到新的主服务器
6.重新设置主服务器

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

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

相关文章

电子秤专用模拟数字(AD)转换器芯片HX711介绍

HX711简介HX711是一款专为高精度电子秤而设计的24 位A/D 转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本&#xff…

分享112个JS菜单导航,总有一款适合您

分享112个JS菜单导航,总有一款适合您 112个JS菜单导航下载链接:https://pan.baidu.com/s/1Dm73d2snbu15hZErJjTXxg?pwdfz1c 提取码:fz1c Python采集代码下载链接:https://wwgn.lanzoul.com/iKGwb0kye3wj base_url "h…

【游戏逆向】RPG游戏背包镶嵌系统分析

镶嵌系统是很多3D游戏都有的功能,玩家可以向镶嵌槽内附加宝石来提升装备的属性,这也直接提升了物品的价值。在一些扫拍卖和摆摊的外挂中经常利用这个属性来低价购入高价值装备。以这款游戏为例,我们来对装备上的镶嵌槽和镶嵌宝石进行分析。 …

Nacos,一款非常优秀的注册中心(附视频)

Nacos 核心源码精讲 - IT贱男 - 掘金小册全方位源码精讲,深度剖析 Nacos 注册中心和配置中心的核心思想。「Nacos 核心源码精讲」由IT贱男撰写,375人购买https://s.juejin.cn/ds/BuC3Vs9/ 先简单说两句 你好,很高兴你能够点开本小册&#x…

python 的 if 语句如何使用说明

文章目录1. 一个示例2. 条件测试2.1 检查是否相等2.2 检查是否相等时不考虑大小写2.3 检查是否不相等2.4 比较数字2.5 检查多个条件2.6 布尔表达式3. if 语句4. 使用 if 语句处理列表1. 一个示例 关于 if 条件语句的使用,我们来写一个示例进行说明: #写…

6.14 Rayleigh商

定义 矩阵在某个向量处的瑞利商Rayleigh quotient是这样定义的: ρ(x):xHAxxHx\rho(x) :\frac{x^HAx}{x^Hx} ρ(x):xHxxHAx​   这个怎么理解呢?上面是埃尔米特内积的表达式,下面是标准埃尔米特内积。但是矩阵不一定是对称阵,如果不是复数的话&#x…

ChatGPT 这个风口,普通人怎么抓住:比如APP集成ChatGPT,公众号集成ChatGPT...

文章目录1. 引出问题2. 简单介绍ChatGPT2.1 ChatGPT是什么2.2 如何使用ChatGPT3. 普通人利用ChatGPT 变现方式1. 引出问题 最近几天OpenAI发布的ChatGPT聊天机器人如日中天,连着上了各个平台的热搜榜。 很多平台也都已集成了ChatGPT,比如csdn的客户端A…

json-server使用

文章目录json-server使用简介安装json-server启动json-server操作创建数据库查询数据增加数据删除数据修改数据putpatch配置静态资源静态资源首页资源json-server使用 简介 github地址 安装json-server npm install -g json-server启动json-server json-server --watch db…

Linux系统位运算函数以及相应CPU ISA实现收录

以32位数据的二进制表示为例,习惯的写法是LSB在左,MSB在右,注意BIT序和大小端的字节序没有关系。Linux和BIT操作有关的接口在定义在头文件bitops.h中,bitops.h定义有两层,通用层和架构层,对应两个bitops.h&…

【重要】2023年上半年有三AI新课程规划出炉,讲师持续招募中!

2023年正式起航,想必大家都已经完全投入到了工作状态中,有三AI平台今年将在已有内容的基础上,继续进行新课程开发,本次我们来介绍今年上半年的课程计划,以及新讲师招募计划。2023年新上线课程我们平台的课程当前分为两…

【Python爬虫案例】批量采集网站壁纸,实现自动更换桌面壁纸

前言 美照天天换,才不会腻 不知道你们是不是这样,我的手机壁纸电脑壁纸,隔三岔五就喜欢换,看久了 我就腻了,索性就用python把这个网站的壁纸都采集下来,顺便再让电脑自动更换我的桌面壁纸 ~ 一篇文章教会…

【AI简报第20230210期】 ChatGPT爆火背后、为AIoT和边缘侧AI喂算力的RISC-V

1. ChatGPT爆火背后:AI芯片迎接算力新挑战原文:https://www.163.com/dy/article/HT7BHN3C05199NPP.htmlChatGPT的出圈走红为AIGC打开全新市场增量,催生了更高的算力需求。作为人工智能三大核心要素之一,算力也被誉为人工智能“发动机”。华泰…

使用服务器搭建alist和webdav

docker镜像官网:https://hub.docker.com/r/xhofe/alist 一、准备工作 环境:centos7、docker 二、步骤 1.拉取alist镜像 在根目录下执行以下命令: docker pull xhofe/alist:latest2.运行alist docker run -d --restartalways -v /etc/ali…

互联网医院源码 线上问诊 智慧医院源码 C#源码

互联网医院平台源码 智慧医院管理系统源码 开发环境:ASP.NET C# VS2019 SQL2008 依托于实体医院利用互联网技术对接院内业务信息系统,向患者提供基于线上问诊、预约挂号、缴费结算、医患互动、诊后随访、健康科普和复诊等全面的医疗健康互联网服务。…

一文读懂 Zebec Chain 的“先行网络” Nautilus 链

最近,Zebec上线了DAO治理系统后,上线并通过了关于Nautilus链的提案,这也是DAO系统上线后通过的首个提案。Nautilus链可以被看作是Zebec Chain上线前的“先行”链,并且是目前行业内为数不多的以“Layer3”作为特点的模块化通用链&a…

花2到5块钱注册体验chatgpt

最近很火的chatGPT不对中国开放,简直太坑了。不过网上也有很多例子去如何注册, 1. 需要可以上网的非中国IP。 有梯子的也可以, 我是某宝3块钱租了一个一天体验的国外服务器,可以查阅资料,有需要可以直接去淘。 2.一个…

vsCode添加右击打开文件夹或者文件功能

1. 前言 vsCode有两种安装方式,通过exe执行安装或者绿色版的软件安装。如果使用绿色版软件,不会自动右击文件夹用vscode打开。此时就需要通过修改注册表的方式进行操作。 2. 修改注册表 2.1 打开注册表 win r regedit2.2 右击文件用vscode打开 找到…

I.MX6ULL内核开发4:设备号的组成与哈希表

目录 一、设备号 二、hash table 一、设备号 文件夹&#xff1a;/home/geralt/linux_driver/kernel/ebf_linux_kernel_6ull_depth1/include/linux/kdev.h 这里面是linux中关于设备号的具体描述 #define MINORBITS 20 #define MINORMASK ((1U << MINORBITS) - 1)#defin…

【C++】十、继承

一、继承的概念及定义继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序设计的层次结构&#xff…

Flink CEP 新特性进展与在实时风控场景的落地

摘要&#xff1a;本文整理自阿里云开发工程师耿飙&阿里云开发工程师胡俊涛&#xff0c;在 FFA 实时风控专场的分享。本篇内容主要分为四个部分&#xff1a;Flink CEP 介绍&新功能解读动态多规则支持与 DemoFlink CEP SQL 语法增强未来规划■ 分享中的动态 CEP 和 CEP S…