mysql 主从复制 读写分离 MHA

mysql 的主从复制和读写分离:

读写分离和MHA高可用的前提 主从复制

主从复制的模式:

1.mysql的默认模式
异步模式:主库在更新完事务之后会立即把结果返回给从服务器,不关心从库是否接收到,是否处理成功
网络问题可能没有同步,或者是其他因素的影响导致同步失败。
快, 效率高

2.全同步模式:
主库在更新完事务之后,立即把结果返回到从库,所有的从库执行完之后才能继续下一个同步。安全,但性能低

3.半同步复制模式
介于异步和全同步之间,主库更新完事务,也是同步到从库,同步完之后有一个等待时间
等待时间是一个tcp/ip的往返时间 5ms左右
既一定程度上保证效率,又在一定程度上保证了数据的完整性

主从复制:主可以复制给从,从不能到主 也不能从到从

主从复制的延迟怎么解决:
1.网络问题:网线 路由器 防火墙的原因
2.硬件设备问题:cpu 内存 磁盘 出问题
3.配置文件 写错

配置文件中进行设置来提高数据的安全性。

前提 数据的存储引擎是innodb cat /etc/my.cnf 才行

双一设置:
innodb_flush_log_at_trx_commit=1
每次提交都会刷新事务日志,确保事务的持久性。但会影响性能
sync_binlog=1
每次提交事务,将二进制日志的内容保存到磁盘,确保日志的持久性。提高安全性

性能化设置:

sync_binlog=5 或10 0 极端情况 不建议
最多提交几条事务会进行磁盘刷新 日志内容保存到磁盘

innodb_flush_log_at_trx_commit=2
每次更新都保存在内存中,不进行刷新。

innodb_buffer_pool_size=60M
控制innodb缓冲池的大小,增大可以提高数据库的性能,但占用的是系统内存,配置时要注意合理化时间。

主从复制如何实现

主服务器记录数据变更到binlog,从服务器请求并复制这些变更到中继日志,然后执行以同步数据。异步过程,提升性能与可靠性
基于mysql的二进制日志,根据主库的二进制文件的标志位,实现主从同步。

主从服务器之间,服务器的时间要同步
架构:一主两从 三台服务器
192.168.233.21 mysql8.0主
192.168.233.22 mysql8.0从
192.168.233.23 mysql8.0从

log- slave-updates=true
允许 从服务器 从主库复制数据时,可以写入 从库 自己的二进制日志中
relay-log=relay-log-bin
从服务器上获取二进制日志的开头,开启从库的二进制日志
relay-log-index=slave-relay-bin.index
二进制日志的索引文件的名称
relay_log_recovery=1
配置从服务器 在启动使是否执行二进制日志的回复操作(和主库同步),1表示开启
Slave_IO_Running
从库和主机的读写通信是否正常
Slave_SQL_Running
slave mysql进程状态是否正常

读写分离:

前提是主从复制
在主从架构中,主库只负责写(数据写在主库,主从复制到从),从库只负责读

读写分离的方式:

1.代码 开发人员 使用代码完成,涉及到数据库的二次开发。性能好,不需要额外硬件设备

2.中间层代理 代理服务器。在客户端和主从架构之间有一个代理服务器。代理服务器收到客户端的请求之后,通过客户端的sql语句来进行判断,读转到从,写转到主

amoeba:读写分离最常用客户端代理软件。java代码开发的
192.168.233.21 mysql8.0主
192.168.233.22 mysql8.0从
192.168.233.23 mysql8.0从
192.168.233.10 jdk1.6和amoeba
192.168.233.20 maridb

MHA高可用

高可用模式下的故障切换,基于主从复制。
单点故障和主从复制不能切换的问题。
至少需要三台
故障切换过程 0-30秒
vip地址,根据vip地址所在的主机,确定主备

主和备不是优先确定的,主从复制的时候就确定了主,备是在MHA的过程中确定。
MHA的组件:
MHA NODE数据节点,每台mysql和管理服务器都要安装 监控服务器状态以及收集数据
MHA的manager管理节点
管理mysql的高可用集群
可以单独部署在一台独立的服务器,也可以部署多个
实现主备之间切换。主发生故障。切换到备。

MHA特点:
1.manager来实现主备切换
2.数据同步还是依靠二进制日志,最大程度保证数据不丢失
3.半同步方式,实现数据的完整性
一主多从的架构,最少三台

架构:
4台
master 192.168.235.21 mysql 8.0 node组件
slave1 192.168.235.22 mysql 8.0 node组件
slave2 192.168.235.23 mysql 8.0 node组件
管理节点 192.168.23.10 node组件 manager组件

masterha_check_ssh
所有的数据库节点和管理节点通过ssh来进行互相通信,检查集群的ssh配置
masterha_check_repl
检查mysql的复制情况 数据同步
masterha_manager
manager启动脚本
masterha_check_status
检查MHA集群状态的文件
masterha_master_switch
控制故障转移
masterha_stop
关闭manager服务

master_ip_failover自动故障切换时, vip的管理脚本
master_ip_online_change 在线切换时vip的管理脚本
power_manager故障发生后,关闭主机的脚本
send_report 故障切换之后,发送报警的脚本

在 manager 节点上测试 ssh 无密码认证
masterha_check_ssh -conf=/etc/masterha/app1.cnf

在 manager 节点上测试 mysql 主从连接情况
masterha_check_repl -conf=/etc/masterha/app1.cnf

在 manager 节点上启动 MHA
nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null >
/var/log/masterha/app1/manager.log 2>&1 &

查看 MHA 状态,可以看到当前的 master 是 master 节点。
masterha_check_status --conf=/etc/masterha/app1.cnf

查看 MHA 日志,也以看到当前的 master 是 192.168.233.21,如下所示。
cat /var/log/masterha/app1/manager.log | grep “current master”

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

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

相关文章

大模型学习应用 1:用 itrex 创新高效实现 LLM 的部署和微调

用 itrex 创新高效实现 LLM 的部署和微调 - 项目作业 目录 准备工作Task 1 完成在线环境的工具包安装&#xff0c;包含 基础环境包、Extension for Transformers 包、加速计算包Task 2 利用 Intel Extension for Transformers 部署通义千问 Qwen-7B Chat&#xff0c;并根据 pr…

zynqmpsoc On-chip Memory

zynqmpsoc 开发手册 On-chip Memory 章节 Introduction The on-chip memory (OCM) contains 256 KB of RAM. It supports a 128-bit AXI slave interface port. The OCM has eight exclusive access monitors that can simultaneously monitor up to eight exclusive access tr…

前端系列-7 Vue3响应式数据

1.响应式数据和实现 响应式数据的核心是当数据模型发生变化时&#xff0c;与之相关(使用该数据模型)的视图或组件可以自动更新&#xff0c;以反映最新的数据状态。 实现原理是数据劫持、依赖收集和分发更新&#xff0c;数据劫持是一种AOP策略。 在vue2中通过Object.defineProp…

(四)js前端开发中设计模式之简单工厂模式

简单工厂模式,又叫静态工厂方法&#xff0c;由一个工厂对象决定创建出哪一种产品类的实例&#xff0c;主要用来创建同一类对象 let LoginAlert function (msg) {this.content msg } LoginAlert.prototype {show() {const div document.createElement(div)div.style.cssText…

C#开发的全屏图片切换效果应用 - 开源研究系列文章 - 个人小作品

这天无聊&#xff0c;想到上次开发的图片显示软件《 PhotoNet看图软件 》&#xff0c;然后想到开发一个全屏图片切换效果的应用&#xff0c;类似于屏幕保护程序&#xff0c;于是就写了此博文。这个应用比较简单&#xff0c;主要是全屏切换换图片效果的问题。 1、 项目目录&…

设计模式实战:文件系统的设计与实现

问题描述 设计一个文件系统模拟器,用户可以创建文件和文件夹,对文件进行复制、删除等操作,并支持克隆文件和文件夹。系统需要实现组合模式来处理文件和文件夹的层次结构,使用命令模式来封装操作,并利用原型模式实现文件和文件夹的克隆。 设计分析 组合模式 组合模式用…

自动驾驶-机器人-slam-定位面经和面试知识系列04之高频面试题(02)

这个博客系列会分为C STL-面经、常考公式推导和SLAM面经面试题等三个系列进行更新&#xff0c;基本涵盖了自己秋招历程被问过的面试内容&#xff08;除了实习和学校项目相关的具体细节&#xff09;。在知乎和牛客&#xff08;牛客上某些文章上会附上内推码&#xff09;也会同步…

【Vue3】watch 监视 ref 定义的数据

【Vue3】watch 监视 ref 定义的数据 背景简介开发环境开发步骤及源码参数说明 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努…

【C++进阶学习】第八弹——红黑树的原理与实现——探讨树形结构存储的最优解

二叉搜索树&#xff1a;【C进阶学习】第五弹——二叉搜索树——二叉树进阶及set和map的铺垫-CSDN博客 AVL树&#xff1a; ​​​​​​【C进阶学习】第七弹——AVL树——树形结构存储数据的经典模块-CSDN博客 前言&#xff1a; 在前面&#xff0c;我们已经学习了二叉搜索树和…

PCIe 6.0为什么需要14-bit tag

1.TLP中的tag是什么 在PCIe TLP&#xff08;Transaction Layer Packet&#xff09;中&#xff0c;tag是分配给特定Non-Posted Request的编号&#xff0c;协议要求CPL/CPLD中的tag 与对应non-post request TLP中的tag保持一致&#xff0c;因此Requester可以使用tag来识别CPL…

Windows通过命令查看mac : getmac

要查看本机网卡mac&#xff0c;可以通过ipconfig /all 显示&#xff0c;但输出内容过多 可以通过getmac命令查看 示例 C:\Users\Desktop> getmac物理地址 传输名称暂缺 没有硬件 1C-1B-B5-04-E2-7D \Device\Tcpip_{80096E40-D51D-490C-9AF7-…

Java 扫雷游戏

程序分析 使用Java编写的扫雷游戏界面程序&#xff0c;主要内容总结如下&#xff1a; Frame类继承自JFrame&#xff0c;构建了扫雷游戏的界面。 包含文本框text、标签nowBomb和setBomb、按钮start、面板MenuPamel和bombPanel等组件。通过jbInit方法进行初始化设置&#xff0c;…

note24:表分区规范

目录 分区设计原则 分区维护 存储方式及分布键规范 分区设计原则 表分区用于解决数据量特别大的表的问题&#xff0c;比如事实表&#xff0c;解决办法就是将表分成很多小且更容易管理的部分。 表分区参考以下几个原则 &#xff08;1&#xff09;表是否足够大&#xff1f;…

免费【2024】springboot 趵突泉景区的智慧导游小程序

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

MATLAB基础:数组

今天我们继续学习MATLAB中的数组 我们在学习MATLAB时了解到&#xff0c;MATLAB作者秉持着“万物皆可矩阵”的思想企图将数学甚至世间万物使用矩阵表示出来&#xff0c;而矩阵的处理&#xff0c;自然成了这门语言的重中之重。 数组基础 在MATLAB中&#xff0c;数组是一个基本…

十、SpringBoot 统⼀功能处理【拦截器、统一数据返回格式、统一异常处理】

十、SpringBoot 统⼀功能处理 1. 拦截器【HandlerInterceptor、WebMvcConfig】1.1 拦截器快速⼊⻔⾃定义拦截器&#xff1a;实现HandlerInterceptor接⼝&#xff0c;并重写其所有⽅法注册配置拦截器&#xff1a;实现WebMvcConfigurer接⼝&#xff0c;并重写addInterceptors⽅法…

堆(c++)

堆是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。 堆总是满足下列性质&#xff1a; 堆中某个节点的值总是不大于或不小于其父节点的值&#xff1b;堆总是一棵完全二叉树。 常见的堆有二叉堆、斐波那契堆等。 堆是非线性数据结构&#…

初识C++ · map和set的使用

目录 前言&#xff1a; 1 set 2 map 前言&#xff1a; 在前面阶段&#xff0c;我们已经学习了stl里面的部分容器&#xff0c;比如vector,list,deque等&#xff0c;这些容器都被称为序列式容器&#xff0c;也就是每个值之间式没有关联的&#xff0c;那么今天介绍的容器&…

【笔记本触摸屏】超级好用技巧

选中文字&#xff1a;点一下要复制的文字开头&#xff0c;按住shift键不放&#xff0c;然后点一下你想要的文字结尾滚动&#xff1a;双指向 水平 或者 垂直 方向滑动放大或者缩小: 将两个手指放在触摸板上&#xff0c;让后收缩后者拉伸显示更多命令&#xff08;类似于右键单击&…

四十九、 通过境内数据交易所进行跨境数据贸易应考虑哪些跨境数据合规问题?

根据中国信通院数据显示&#xff0c;2023 年我国数字经济规模可达 56.1 万亿元, 数字经济占 GDP 比重接近于第二产业&#xff0c;占国民经济的比重&#xff0c;达到 40%以上。伴随数字技术兴起以及各项数字经济相关的政策和法律的落地&#xff0c;以跨境数据流动为底层支撑的跨…