半同步主从复制

半同步主从复制的概念

半同步主从复制(Semisynchronous Replication, SBR)是MySQL数据库中的一种数据复制方式,它在异步复制的基础上增加了一定程度的同步性,旨在提高数据安全性,减少数据丢失的风险。

半同步主从复制的原理

  1. 主服务器(Master)操作:客户端向主服务器发起写操作(如INSERT、UPDATE、DELETE等)。主服务器执行这些操作,并将它们封装在一个或多个事务中。事务完成后,主服务器将事务的所有更改记录到其本地的二进制日志(Binary Log, binlog)。
  2. binlog记录与传输:主服务器上运行的log dump线程负责通知从服务器来拿取二进制日志。
  3. 等待从服务器确认:与异步复制不同,半同步复制要求主服务器在提交事务后,等待至少一个从服务器的确认。即从服务器必须在接收到二进制日志并写入到中继日志(Relay Log)后将结果反馈给主服务器。主服务器接收到确认后,才将事务commit写入磁盘中。
  4. 从服务器操作:从服务器启动一个I/O线程,该线程连接到主服务器并请求从某个特定的binlog位置(如最后一次同步的位置)开始复制。I/O线程接收到主服务器发来的二进制日志后,将其写入到从服务器本地的中继日志。当I/O线程将二进制日志写入中继日志后,会向主服务器发送一个确认消息,表明已成功接收并持久化该事件。
  5. SQL线程执行:另一个在从服务器上运行的SQL线程负责读取中继日志中的事件,并按照事件在binlog中的顺序在从服务器上重新执行这些操作,以保持数据的一致性。

半同步主从复制的操作

1、环境准备

需要两台搭建好异步主从复制的服务器。

2、master服务器配置

// 主服务器安装半同步插件
root@(none) master-mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';// 修改配置
root@(none) master-mysql> SET GLOBAL rpl_semi_sync_master_timeout = 1;
root@(none) master-mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1;[root@master ~] vim /etc/my.cnf
# 添加
[mysqld]
rpl_semi_sync_master_timeout=1000
rpl_semi_sync_master_enabled=1// 刷新服务
[root@master ~] service mysqld restart

3、slave服务器配置

// 主服务器安装半同步插件
root@(none) slave-mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';// 修改配置
root@(none) slave-mysql> SET GLOBAL rpl_semi_sync_slave_enabled = 1;[root@slave ~] vim /etc/my.cnf
# 添加
[mysqld]
rpl_semi_sync_slave_enabled=1// 刷新服务
[root@slave ~] service mysqld restart

延迟备份

延迟备份的作用如下:

1. 数据恢复与容灾

  • 误操作恢复:在生产环境中,由于人为误操作(如误删除数据、表或库)导致的数据丢失是常见的风险。延迟备份允许在误操作发生前的一个时间点停止复制,从而保留误操作之前的数据状态,便于数据恢复。这一点对于避免数据灾难至关重要。
  • 容灾备份:延迟备份可以作为额外的容灾手段,即使主库或实时备份库出现问题,延迟备份库也能提供一定时间前的数据快照,保障数据的安全性和可恢复性。

2. 减轻主库压力

  • 降低同步负载:在高并发或大数据量环境下,实时同步可能会对主库造成较大的性能压力,包括I/O压力、CPU负载等。延迟备份通过控制同步的时机和频率,可以有效减轻主库的压力,避免影响主库的正常业务处理。

 其具体操作如下:

// 在slave服务器上操作
root@(none) slave-mysql> stop slave;
// 这里的10为延迟10秒
root@(none) slave-mysql> CHANGE MASTER TO MASTER_DELAY = 10;
root@(none) slave-mysql> start slave;

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

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

相关文章

阶段三:项目开发---大数据开发运行环境搭建:任务8:安装配置Redis

任务描述 知识点:安装配置Redis 重 点: 安装配置Redis 难 点:无 内 容: Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可…

电路基础知识汇总

1.0 串连,并联,混连 串联的定义 电路串联是一种电路元件的连接方式,其中各个元件沿着单一路径互相连接,形成一个连续的链。在串联电路中,每个节点最多只连接两个元件,这意味着电流只有一条路径可以通过整个…

Apache Seata Mac下的Seata Demo环境搭建

本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 Mac下的Seata Demo环境搭建(AT模式) 前言 最近因为工作需要&#xf…

Git教程

文章目录 Git分布式版本控制工具版本控制器的方式常用命令远程仓库Tip Git分布式版本控制工具 ​ Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 ​ Git是分布式的,Git不需要有中心服务器,我们每…

【感谢告知】本账号内容调整,聚焦于Google账号和产品的使用经验和问题案例分析

亲爱的各位朋友: 感谢您对本账号的关注和支持! 基于对朋友们需求的分析和个人兴趣的转变,该账号从今天将对内容做一些调整,有原来的内容改为Google(谷歌)账号和产品的使用经验,以及相关问题的…

24西安电子科技大学经济与管理学院—考研录取情况

24西安电子科技大学—经理与管理学院—考研录取统计 01、经理与管理学院各个方向 02、24经济与管理近三年复试分数线对比 1、经管院24年院线相对于23年院线普遍下降2-15分,个别专业上涨4-10分。 2、经管院应用经济学2024年院线350分;管理科学与工程院线…

java join与yield方法

join() join() 方法的主要作用是使当前线程(调用 join() 方法的线程)等待目标线程完成执行。当目标线程执行完毕后,当前线程才会继续执行。 代码示例: public class JoinExample {public static void main(String[] args) {Thr…

保研复习 | 数据结构

目录 CH1 绪论☆ 数据项、数据元素、数据结构☆ 逻辑结构和存储结构的区别☆ 顺序存储结构和链式存储结构的比较☆ 算法的重要特性☆ 算法的复杂度 CH2 线性表☆ 单链表 CH3 栈、队列和数组☆ 栈和堆是什么?☆ 栈在括号匹配中的应用☆ 栈在表达式求值中的应用☆ …

Linux|信号

Linux|信号 信号的概念信号处理的三种方式捕捉信号的System Call -- signal 1.产生信号的5种方式2.信号的保存2.1 core 标志位 2.信号的保存2.1 对pending 表 和 block 表操作2.2 阻塞SIGINT信号 并打印pending表例子 捕捉信号sigaction 函数验证当前正在处理某信号&#xff0c…

数据库SQL Server常用字符串函数

文章目录 字符串函数 字符串函数 CONCAT:拼接字符串 CONCAT(COLUMN1,_,COLUMN2) AS COLCONVERT:转换数据类型 CONVERT(data_type(length),data_to_be_converted,style)例如:CONVERT(VARCHAR(10),GETDATE(),110) SUBSTRING():从字符串中返回…

java项目总结5

1.单列集合顶层接口Collction 集合体系结构 注意:因为Collection定义的方法是共性的,使用不能通过搜引来删除,只能通过元素的对象进行删除,返回值是boolean类型。例如我添加了"aaa"进List集合,删除则要对象…

STM32-01 推挽输出-点亮LED

本文以STM32中点亮LED为例,解读推挽输出的原理 推挽输出介绍 所谓的推挽输出,就是通过控制输出控制模块,打开或者关闭P-MOS或者N-MOS。 ─ 推挽模式下:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将激活P-M…

局部静态变量实现的单例存在多个对象

文章目录 背景测试代码运行测试尝试打开编译器优化进一步分析 背景 业务中出现日志打印失效&#xff0c;发现是因为管理日志对象的单例在运行过程中存在了多例的情况。下面通过还原业务场景来分析该问题。 测试代码 /* A.h */ #ifndef CALSS_A #define CALSS_A#include <…

打造属于自己的脚手架工具并发布到npm仓库

一、创建项目 使用 npm init -y 创建项目创建项目入口文件 index.js在 package.json 中添加 bin 字段使用 npm link 命令将文件映射至全局&#xff0c;使可以在本地测试 zp 命令 // "zp" 为用于全局执行脚手架的命令&#xff0c;vue-cli中使用的是vue命令 "bi…

基于java+springboot+vue实现的旅游管理系统(文末源码+lw+ppt)23-402

研究的内容 当下流行的WPS、Word等办公软件成为了人们耳熟能详的系统&#xff0c;但一些更加专业性、性能更加强大的网络信息工具被人们“埋没”在互联网的大海中。甘肃旅游管理系统是一个便于用户查看热门景点、酒店信息、推荐线路、旅游攻略、景点资讯等&#xff0c;管理员进…

【Python基础篇】你了解python中运算符吗

文章目录 1. 算数运算符1.1 //整除1.2 %取模1.3 **幂 2. 赋值运算符3. 位运算符3.1 &&#xff08;按位与&#xff09;3.2 |&#xff08;按位或&#xff09;3.3 ^&#xff08;按位异或&#xff09;3.4 ~&#xff08;按位取反&#xff09;3.5 <<&#xff08;左移&#…

HTML 【实用教程】(2024最新版)

核心思想 —— 语义化 【面试题】如何理解 HTML 语义化 ?仅通过标签便能判断内容的类型&#xff0c;特别是区分标题、段落、图片和表格 增加代码可读性&#xff0c;让人更容易读懂对SEO更加友好&#xff0c;让搜索引擎更容易读懂 html 文件的基本结构 html 文件的文件后缀为 …

【高录用、快检索、过往5届均已检索、SPIE 出版】第六届无线通信与智能电网国际会议(ICWCSG 2024)

随着科技的飞速发展和能源需求的日益增长&#xff0c;智能电网技术逐渐成为电力行业的重要发展方向。与此同时&#xff0c;无线通信技术在近年来也取得了显著的进步&#xff0c;为智能电网的发展提供了强有力的支持。为了进一步推动无线通信与智能电网的结合与发展&#xff0c;…

学IT上培训班真的有用吗?

在学习IT技术的过程中&#xff0c;你是否也被安利过各种五花八门的技术培训班&#xff1f;这些培训班都是怎样向你宣传的&#xff0c;你又对此抱有着怎样的态度呢&#xff1f;在培训班里学技术&#xff0c;真的有用吗&#xff1f; 一、引入话题 IT行业是一个快速发展和不断变化…

C++初学者指南-4.诊断---未定义行为检测器

C初学者指南-4.诊断—未定义行为检测器 未定义行为检测器(UBSAN) 适用编译器&#xff1a;clang,g在运行时检测许多类型的未定义行为 解引用空指针从未对齐的指针读取整数溢出被0除 … 在代码中加入额外的指令:在调试构建中增加运行时约25% 示例&#xff1a;有符号整形溢出 …