【后端面试总结】MySQL主从复制逻辑的技术介绍

MySQL主从复制逻辑的技术介绍

1. 基本概念

MySQL主从复制是一种数据库复制技术,用于将一个数据库服务器(主服务器,Master)上的数据更改同步到一个或多个其他数据库服务器(从服务器,Slave)上。这种技术主要用于数据备份、负载均衡、高可用性和读写分离等场景。

2. 主从架构
  • 主库(Master):负责处理所有写请求,并记录数据变更。
  • 从库(Slave):同步主库的数据,并可以处理读请求,从而减轻主库的负担。

这种架构通过分布式负载实现更高的性能和可用性。

3. 复制类型

MySQL主从复制支持多种复制方式:

  • 异步复制:主库提交事务后无需等待从库确认,可能导致数据滞后。
  • 半同步复制:主库等待至少一个从库确认,以减少数据丢失风险。
  • 同步复制:所有从库必须确认后才提交事务,延迟较大。
4. 工作原理

MySQL主从复制的基本思想是将主数据库上的所有变更操作(如插入、更新、删除)实时地复制到从数据库。具体流程如下:

  • 日志记录:主库将所有更改操作记录到二进制日志(Binary Log,binlog)中。
  • 日志传输:从库定期向主库请求新的二进制日志文件。
  • 应用更改:从库读取这些日志并执行相应的SQL语句,将数据同步到本地数据库。
5. 主要组件
  • Binary Log(binlog):主库上的二进制日志,记录所有更改。
  • Replication I/O Thread:从库中的线程,负责从主库拉取binlog。
  • Replication SQL Thread:从库中的线程,负责执行binlog中的SQL语句。
6. 配置步骤

在设置主从复制之前,需要确保以下条件:

  • 主服务器和从服务器都已安装MySQL,且建议使用相同版本的MySQL以避免兼容性问题。
  • 主从服务器能够网络互通,并且防火墙设置允许相应的MySQL端口(默认3306)通信。

在主服务器上配置

  1. 修改配置文件,添加以下内容:

    [mysqld]
    server-id=1 # 唯一的服务器ID
    log-bin=mysql-bin # 开启二进制日志
    

    重启MySQL服务。

  2. 创建用于复制的用户并授权:

    CREATE USER 'replicator'@'%' IDENTIFIED BY 'your_password';
    GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
    FLUSH PRIVILEGES;
    

    记录当前二进制日志位置。

在从服务器上配置

  1. 修改配置文件,添加以下内容:

    [mysqld]
    server-id=2 # 唯一的服务器ID,不同于主服务器
    

    重启MySQL服务。

  2. 设置主服务器信息:

    CHANGE MASTER TO
    MASTER_HOST='主服务器IP',
    MASTER_USER='replicator',
    MASTER_PASSWORD='your_password',
    MASTER_LOG_FILE='记录的File',
    MASTER_LOG_POS=记录的Position;
    

    启动复制进程:

    START SLAVE;
    

    检查复制状态,确保Slave_IO_RunningSlave_SQL_Running都是Yes

7. 监控和维护
  • 监控复制状态:定期检查从库的复制状态,确保没有错误。使用SHOW SLAVE STATUS\G;命令。
  • 处理复制延迟:复制延迟会导致从库数据不一致。可以通过调整查询语句、优化性能、使用更高效的硬件或考虑使用半同步复制来减轻延迟。
  • 故障恢复:如果主库发生故障,可以将从库提升为主库。首先停止从库的复制,记录从库的状态,确保数据一致性,然后在新主库上创建新的复制用户,配置新的从库。
8. 备份策略
  • 逻辑备份:使用mysqldump工具进行数据导出,适合小型数据库。
  • 物理备份:使用mysqlbackupPercona XtraBackup进行热备份,适合大规模数据库。
  • 增量备份:只备份自上次备份以来发生变化的数据,节省存储空间和时间。在主从复制环境中,从库可以通过binlog实现增量备份。
9. 使用场景
  • 负载均衡:通过将读请求分发到多个从库,减轻主库压力。
  • 灾难恢复:在主库故障时迅速切换到从库,确保业务连续性。
  • 数据分析:从库可用于生成报表和数据分析,避免影响主库性能。
10. 注意事项
  • 网络延迟:主从复制依赖网络传输,可能会出现延迟,导致从服务器的数据与主服务器不一致。
  • 二进制日志格式:要选择合适的二进制日志格式(如ROW、STATEMENT、MIXED),以适应不同的使用场景。
  • 故障恢复:在主服务器故障时,可以手动将从服务器提升为主服务器,确保业务连续性。
  • 安全性:确保复制用户的权限设置合理,只授予必要的权限;并考虑对数据传输进行加密。

通过合理配置和监控,MySQL主从复制可以显著提升数据库的可用性和性能,有效地管理数据同步,实现系统的弹性和鲁棒性。

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

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

相关文章

echarts画风向杆

1.安装echarts 2.引入echarts 4.获取数据,转换数据格式 windProfile.title.text ${moment(time.searchTime[0], ‘YYYY-MM-DD HH:mm:ss’).format( ‘YYYY-MM-DD HH:mm’ )}-${moment(time.searchTime[1], ‘YYYY-MM-DD HH:mm:ss’).format(‘YYYY-MM-DD HH:mm’)…

Linux系统编程——理解系统内核中的信号捕获

目录 一、sigaction() 使用 信号捕捉技巧 二、可重入函数 三、volatile关键字 四、SIGCHLD信号 在信号这一篇中我们已经学习到了一种信号捕捉的调用接口:signal(),为了深入理解操作系统内核中的信号捕获机制,我们今天再来看一个接口:si…

HTTP、HTTPS和SOCKS5代理協議

一、HTTP代理協議 HTTP代理是最基礎、使用最廣泛的代理協議之一。它主要用於處理HTTP協議的數據請求,即流覽網頁時的數據傳輸。HTTP代理的工作原理相對簡單:當用戶向網站發送請求時,HTTP代理伺服器首先接收該請求,然後將其轉發給…

IEC104 协议 | 规约帧格式 / 规约调试

注:本文为 “ IEC104 协议” 相关文章合辑。 未整理去重,如有内容异常请看原文。 图片清晰度限于引文原状。 从零开始理解 IEC104 协议之一 ——104 规约帧格式 洪城小电工 IP 属地:江西 2020.06.10 00:30:54 前言 本文根据相关标准、本…

代码随想录训练营第二十七天| 贪心理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

贪心没有套路,说白了就是常识性推导加上举反例 今天的内容比较简单 简单了解贪心是通过局部最优解反推全局最优解(有经验成分) 455.分发饼干 题目链接:455. 分发饼干 - 力扣(LeetCode) 讲解链接&#xff…

WPS如何快速将数字金额批量转换成中文大写金额,其实非常简单

大家好,我是小鱼。 在日常的工作中经常会遇到需要使用金额大写的情况,比如说签订业务合同时一般都会标注大写金额,这样是为了安全和防止串改。但是很多人也许不太熟悉金额大写的方法和习惯,其它没有关系,我们在用WPS制…

Vue3之Pinia

在前端开发中,随着应用程序的规模和复杂性增加,状态管理成为了不可或缺的一部分。Pinia作为Vue 3的专属状态管理库,以其轻量级、易用性和灵活性,逐渐成为了Vue开发者的新宠。本文将详细介绍Pinia的基本概念、功能特点、应用场景、…

MHA binlog server

GTID模式下切换的时候,默认是不会去Master上获取binlog,如果配置了Binlog Server,MHA机会去binlog-server上获取,下面创建一个binlog server,并验证binlog server能够在主库binlog被清理的情况下提供日志恢复. 搭建bi…

针对超大规模病理图像分析!华中科技大学提出医学图像分割模型,提高干燥综合征诊断准确性

口干、眼干、皮肤干,每天伴有不明原因的肌肉酸痛和全身乏力,如果以上症状你「中招」了,除了考虑冬季天气干燥外,还应该警惕一种常见却总是被我们忽视的疾病——干燥综合征 (Sjgren’s Syndrome, SS)。 干燥综合征是以外分泌腺高度…

本地部署 LLaMA-Factory

本地部署 LLaMA-Factory 1. 本地部署 LLaMA-Factory2. 下载模型3. 微调模型3-1. 下载数据集3-2. 配置参数3-3. 启动微调3-4. 模型评估3-5. 模型对话 1. 本地部署 LLaMA-Factory 下载代码, git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Facto…

GPU环境配置

ubuntu基本环境配置 1. 更新包列表 sudo apt-get update sudo apt upgrade 2. 安装英伟达显卡驱动 使用wget在命令行下载驱动包 wget https://cn.download.nvidia.com/XFree86/Linux-x86_64/550.100/NVIDIA-Linux-x86_64-550.100.run 上面使用的是4090版本的,…

[创业之路-199]:《华为战略管理法-DSTE实战体系》- 3 - 价值转移理论与利润区理论

目录 一、价值转移理论 1.1. 什么是价值? 1.2. 什么价值创造 (1)、定义 (2)、影响价值创造的因素 (3)、价值创造的三个过程 (4)、价值创造的实践 (5&…

ASP.NET |日常开发中定时任务详解

ASP.NET |日常开发中定时任务详解 前言一、定时任务的概念与用途1.1 定义1.2 应用场景 二、在ASP.NET中实现定时任务的方式2.1 使用System.Timers.Timer2.2 使用Quartz.NET 三、定时任务的部署与管理3.1 部署考虑因素3.2 管理与监控 结束语优质源码分享 ASP.NET &am…

安装openGauss数据库一主一备

安装openGauss数据库一主一备 一.安装准备1.修改/etc/selinux/config文件中的“SELINUX”值为“disabled”。2.重新启动操作系统。3.检查防火墙是否关闭。4.关闭防火墙并禁止开机重启。5.关闭交换内存6.设置主机名7.设置解析主机名和 IP 地址8.安装相关依赖包9.创建单独的用户组…

【unity】【游戏开发】Unity项目一运行就蓝屏报Watch Dog Timeout

【背景】 由于是蓝屏所以没法截屏,总之今天遇到了一开Unity,过一阵就蓝屏的情况,报Watch Dog Timeout。 【分析】 通过任务管理器查看,发现Unity占用率100%,再观察Unity内部,每次右下角出现一个Global I…

如何从 0 到 1 ,打造全新一代分布式数据架构

导读:本文从 DIKW(数据、信息、知识、智慧) 模型视角出发,探讨数字世界中数据的重要性问题。接着站在业务视角,讨论了在不断满足业务诉求(特别是 AI 需求)的过程中,数据系统是如何一…

java全栈day20--Web后端实战(Mybatis基础2)

一、Mybatis基础 1.1辅助配置 配置 SQL 提示。 默认在 mybatis 中编写 SQL 语句是不识别的。可以做如下配置: 现在就有sql提示了 新的问题 产生原因: Idea 和数据库没有建立连接,不识别表信息 解决方式:在 Idea 中配置 MySQL 数…

深度学习每周学习总结J9(Inception V3 算法实战与解析 - 天气识别)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 目录 0. 总结Inception V1 简介Inception V3 简介1. 设置GPU2. 导入数据及处理部分3. 划分数据集4. 模型构建部分5. 设置超参数&#xff1…

[Effective C++]条款38-39 复合和private继承

本文初发于 “天目中云的小站”,同步转载于此。 条款38 : 通过复合塑膜出has-a或"is-implemented-in-terms-of" 在条款32中我们认识了public继承意味着is-a, 本条款将会认识两个新的关系, 均可通过"复合"这一操作实现出来. 复合 所谓复合, 就是…

重温设计模式--中介者模式

中介者模式介绍 定义:中介者模式是一种行为设计模式,它通过引入一个中介者对象来封装一系列对象之间的交互。中介者使得各个对象之间不需要显式地相互引用,从而降低了它们之间的耦合度,并且可以更方便地对它们的交互进行管理和协调…