mysql 主从复制 读写分离 MHA

ops/2024/12/23 6:45:12/

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.ppmy.cn/ops/86251.html

相关文章

VUE3——001(03)、开发环境配置(node.js/mvn/java/ngix/tomact/vue3)

嫌麻烦的请下载安装包&#xff0c;有点强迫&#xff08;懒的&#xff09;可以看看。 解释&#xff1a;安装目录&#xff0c;即软件安装所在目录&#xff0c;如 node.js 我装在 D:\AppFolder\nodejs 系统变量修改 path增加 安装目录 在系统变量 p…

常用的python程序汇总——入门级

只用于记录最近的一些日常程序。 目录 前言 一、文件和目录管理 1.读取文件结构 读取所有文件夹和文件 读取到N级子文件夹和文件 只读取到N级子文件夹 2.遍历文件并处理&#xff08;复制、删除&#xff09; 说明&#xff1a; 二、数据分析和处理 三、数据可视化 四、…

师资培训丨AIGC 技术与大模型应用开发实战线下广州班莅临泰迪智能科技参观调研

7月23日&#xff0c;2024年第二期全国数字人才技能提升师资培训班——AIGC 技术与大模型应用开发实战线下广州班莅临广东泰迪智能科技股份有限公司产教融合实训基地参观调研&#xff0c;来自全国各地三十多名高校教师参与本次活动。泰迪智能科技董事长张良均、校企合作经理吴桂…

API 技术开发分享:连接电商平台数据获取的桥梁

在当今数字化的时代&#xff0c;API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;技术成为了实现不同系统之间通信和数据交换的关键。它就像是一座无形的桥梁&#xff0c;使得各种应用能够相互协作&#xff0c;共享资源&#xff0c;…

SQL 注入漏洞详解 - Union 注入

1)漏洞简介 SQL 注入简介 SQL 注入 即是指 Web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 Web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,…

一下午连续故障两次,谁把我们接口堵死了?!

唉。。。 大家好&#xff0c;我是程序员鱼皮。又来跟着鱼皮学习线上事故的处理经验了喔&#xff01; 事故现场 周一下午&#xff0c;我们的 编程导航网站 连续出现了两次故障&#xff0c;每次持续半小时左右&#xff0c;现象是用户无法正常加载网站&#xff0c;一直转圈圈。 …

常见的jmeter面试题及答案

1、解释什么是JMeter? JMeter是一款Java开源工具&#xff0c; 用于性能负载测试。它旨在分析和衡量Web应用程序和各种服务的性能和负载功能行为。 2、说明JMeter的工作原理? JMeter就像一群将请求发送到目标服务器的用户-样。它收集来自目标服务器的响应以及其他统计数据&…

MongoDB流量分析

MongoDB流量分析通常指的是对MongoDB数据库的网络通信量、操作频率、性能指标和资源利用情况进行监控和分析的过程。这有助于理解数据库的负载、性能、潜在的瓶颈和安全状况&#xff0c;以便进行优化和维护。MongoDB流量分析可以涵盖以下几个方面&#xff1a; 网络流量监控&…