MySQL 复制与主从架构(Master-Slave)

MySQL 复制与主从架构(Master-Slave)

MySQL 复制与主从架构是数据库高可用和负载均衡的重要手段。通过复制数据到多个从服务器,既可以实现数据冗余备份,又能分担查询压力,提升系统整体性能与容错能力。本文将详细介绍 MySQL 复制的基本原理、配置方式、复制类型以及在主从架构中的实际应用场景。


1. MySQL 复制概述

1.1 复制的基本原理

MySQL 复制指的是将主服务器(Master)上的数据变更自动传递到一个或多个从服务器(Slave)。其核心过程如下:

  • 二进制日志(Binlog)记录:主服务器对数据的每一次修改都会记录到二进制日志中。
  • 日志传输:从服务器通过 I/O 线程连接主服务器,并获取二进制日志的内容。
  • SQL 线程执行:从服务器的 SQL 线程解析并执行二进制日志中的操作,使从库数据与主库保持一致。

1.2 复制优势

  • 高可用性:主库出现故障时,可以通过切换到从库继续提供服务。
  • 负载均衡:查询请求可以分发到多个从库,降低主库的压力。
  • 数据备份:通过复制实现数据的异地备份和容灾。

2. 主从复制配置

2.1 主服务器配置

在主服务器上,需要开启二进制日志功能,并设置唯一的 server-id。示例配置如下(my.cnf 文件中的部分内容):

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog_format = ROW
  • server-id:每个 MySQL 实例必须有一个唯一的标识。
  • log-bin:开启二进制日志记录。
  • binlog_format:通常推荐使用 ROW 格式,能更准确记录数据变化。

2.2 从服务器配置

从服务器同样需要设置一个唯一的 server-id,并配置中继日志参数。示例:

[mysqld]
server-id = 2
relay-log = mysql-relay-bin

此外,还需要指定主服务器的连接信息,并告知从服务器从哪个日志位置开始复制:

CHANGE MASTER TOMASTER_HOST = 'master_ip',MASTER_USER = 'replication_user',MASTER_PASSWORD = 'replication_pass',MASTER_LOG_FILE = 'mysql-bin.000001',MASTER_LOG_POS = 107;

执行完毕后,通过启动复制进程:

START SLAVE;

使用 SHOW SLAVE STATUS\G 可以检查复制状态,确保 Slave_IO_RunningSlave_SQL_Running 均为 Yes


3. 复制类型与特性

3.1 异步复制

  • 工作原理:主库在提交事务后,不等待从库确认,直接返回客户端;从库以一定延迟异步接收并执行变更。
  • 优缺点
    • 优点:性能开销小,写操作延迟低。
    • 缺点:存在数据延迟风险,可能导致主从数据短暂不一致。

3.2 半同步复制

  • 工作原理:主库在提交事务时等待至少一个从库确认接收到二进制日志,但不要求其执行完毕。
  • 优缺点
    • 优点:降低数据丢失风险,比异步复制更稳定。
    • 缺点:性能上稍有影响,尤其在从库网络延迟较高时。

3.3 多源复制

  • 工作原理:从服务器可以同时从多个主服务器复制数据,适用于数据集成和分布式环境。
  • 应用场景:跨数据中心的数据汇总、整合多个业务系统的数据。

4. 主从架构在实际中的应用

4.1 读写分离

  • 策略:将写操作集中在主库,读操作分散到多个从库。可以在应用层或使用中间件实现动态路由。
  • 优势:有效降低主库压力,提高整体查询性能。

4.2 高可用与故障切换

  • 策略:当主库发生故障时,通过自动或手动切换,将其中一台从库升级为新的主库。
  • 工具:可结合 MHA(MySQL High Availability)、Orchestrator 等自动化故障转移工具,提升系统可靠性。

4.3 数据备份与灾难恢复

  • 策略:利用从库的实时数据更新,定期进行备份,同时在异地部署从库,实现容灾。
  • 优势:即使主库出现硬件故障或数据损坏,从库也能作为快速恢复的数据源。

5. 注意事项与优化建议

  • 网络稳定性:保证主从之间网络的稳定和低延迟,减少复制延迟和断连风险。
  • 定期监控:利用 SHOW SLAVE STATUS\G 和第三方监控工具,及时发现复制错误或延迟问题。
  • 数据一致性:在高并发写场景下,关注主从延迟对读写分离可能带来的数据不一致问题,必要时采用半同步复制或其他一致性措施。
  • 安全配置:为复制用户设置最小权限,采用 SSL 加密复制通道,防止数据传输被窃取或篡改。

6. 总结

MySQL 主从复制架构通过自动同步数据实现了高可用性、读写分离和数据备份。无论是在异步复制中追求性能,还是在半同步复制中保证数据安全,都需要根据具体业务需求进行权衡和配置。结合合适的监控与故障切换方案,主从架构能为大规模分布式系统提供稳定、可靠的数据支持。希望这篇文章能为你在设计和优化 MySQL 复制架构时提供全面的参考和实用指导。

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

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

相关文章

《大模型部署》——ollama下载及大模型本地部署(详细快速部署)

ollama Ollama 是一款开源跨平台的大语言模型(LLM)运行工具,旨在简化本地部署和管理 AI 模型的流程。 下载ollama 进入官网下载https://ollama.com/ 选择需要的系统下载 下载完成后直接进行安装 下载大模型 选择想要部署的模型&#…

Java关于包和final

什么是包? 包就是文件夹。用来管理等各种不同功能的java类,方便后期代码维护 包名的规则:公司域名反写包的作用,需要全部英文小写,见名知意。例如:com.pdsu.domain package com.pdsu.demain;public class…

数据层的基本操作

1.数据层的更名: Arcmap内容列表中,数据框所包含的每个图层及每个图层所包含的一系列地理要素,都有相应的描述字符与之对应.默认情况下,添加进地图的图层是以其数据源的名字命名的,而地理要素的描述就是要素类型字段取值.由于这些命名影响到用户对数据的理解和地图输出时的图例…

Vue舞台剧

Vue 的舞台剧比喻 🎭(完整表格版) Vue 结构及路由管理 Vue 结构比喻(舞台剧)🎭作用index.html空白场地 🏟️Vue 负责填充内容,提供 #app 容器,等待演出开始。main.js导…

【Windows】win10系统安装.NET Framework 3.5(包括.NET 2.0和3.0)失败 错误代码:0×80240438

一、.NET3.5(包括.NET 2.0和3.0)安装方式 1.1 联网安装(需要联网,能访问微软,简单,很可能会失败) 1.2 离线安装-救急用(需要操作系统iso镜像文件,复杂,成功几率大) 二、联网安装 通过【控制面板】→【程序】→【程序和功能】→【启用或关闭Windows功能】 下载过程…

Android学习总结之RecyclerView补充篇

在 Android 开发中,列表数据更新的性能一直是关键痛点。传统的 notifyDataSetChanged() 会触发全量刷新,导致不必要的界面重绘。而 DiffUtil 作为 Android 提供的高效差异计算工具,能精准识别数据变化,实现局部更新,成…

Miniforge3高效管理 Python环境:2025年最新实践指南

Miniforge3 高效管理 Python 环境:2025 年最新实践指南 在现代开发中,灵活高效地管理 Python 环境至关重要。Miniforge3 作为一款轻量级 Conda 管理工具,不仅默认采用更新更快的 conda-forge 软件源,还对 ARM 架构(例如 Apple M1/M2/M3)有着出色的适配性。相比于传统的 …

山东大学软件学院项目创新实训开发日志(4)之中医知识问答数据存储、功能结构、用户界面初步设计

目录 数据库设计: 功能设计: 用户界面: 数据库设计: --对话表 (1个对话包含多条消息) CREATE TABLE conversations ( conv_id VARCHAR(36) PRIMARY KEY, -- 对话ID user_id VARCHAR(36) NOT NULL, -- 所属用户 title VARCHAR(100), -- 对话…

交换机、路由器、VLAN、单臂路由、三层交换、STP

华为模拟安装 1.依次安装wincap 2.wireshark 3.virtual box 4.ensp 一、设置 1.virtual box设置 2.计算机防火墙允许以上程序 3.eNSP设置 路由器:AR2240 交换机:S5700、CE12800 防火墙USG6000V 交换机 一、交换机工作原理 1、回顾 二层交换机…

【蓝桥杯】每日练习 Day15

目录 前言 奶牛选美 分析 代码 大臣的旅费 分析 代码 飞机降落 分析 代码 母亲的牛奶 分析 代码 扫雷 分析 代码 前言 虽为诞辰,但也不忘完成每日的训练。 今天给大家带来五道dfs的题目,包括组合数,连通块,数的…

ipconfig、ping、ipconfig/all 4个常用 **Windows终端(CMD)命令** 的详细解释

ipconfig、ping、ipconfig/all 4个常用 Windows终端(CMD)命令 的详细解释、用途分析和使用示例 1. ipconfig 作用 快速查看本地网络连接的 IP地址、子网掩码、默认网关 等基础信息。 示例输出 Windows IP 配置无线局域网适配器 WLAN:IPv4 地址 . . .…

@emotion/css + react+动态主题切换

1.下载插件 npm install --save emotion/css 2.创建ThemeContext.tsx // src/ThemeContext.tsx import React, { createContext, useContext, useState } from "react";// 定义主题类型 export type Theme "light" | "dark";// 定义主题上下…

【信奥一本通提高篇】基础算法之贪心算法

原文 https://bbs.fmcraft.top/blog/index.php/archives/22/ 贪心算法 概述 近年来的信息学竞赛试题,经常出现求一个问题的可行解或最优解的题目。这类问题就是我们通常所说的最优化问题。贪心算法是求解这类问题的一种常用算法。在众多的算法中,贪心…

CentOS-7.0系统基础操作

配置ip地址 编辑网卡文件: vi etc/sysconfig/network-scripts/ifcfg-ens33 在网卡文件里参照如下设置: BOOTPROTO"static" IPADDR192.168.61.233 GATEWAY192.168.61.2 NETMASK255.255.255.0 ONBOOT"yes" 防火墙管理 开启防火墙&am…

【大模型应用】信息抽取的调研

老规矩,先占坑,后续更新。 关键词: Pydantic functioncal 参考文献:小白学大模型:自定义信息抽取Agent-CSDN博客

MySQL内存使用率高问题排查与解决方案:

目录标题 **一、问题现象****二、核心排查步骤****1. 参数检查****2. 内存使用分析****3. 存储过程/函数/视图检查****4. 操作系统级检查** **三、解决方案****1. 调整MySQL配置****2. 关闭透明大页(THP)****3. 优化查询与存储过程****4. 硬件与环境优化…

华为GaussDB数据库的手动备份与还原操作介绍

数据库的备份以A机上的操作为例。 1、使用linux的root用户登录到GaussDB服务器。 2、用以下命令切换到 GaussDB 管理员用户,其中,omm 为当前数据库的linux账号。 su - omm 3、执行gs_dump命令进行数据库备份: 这里使用gs_dump命令进行备…

How to install OpenJ9 JDK 17 on Ubuntu 24.04

概述 OpenJ9 是一款由 IBM 开发并开源的 Java 虚拟机(JVM),现由 ​Eclipse 基金会管理(名为 ​Eclipse OpenJ9)。它旨在提供高性能、低内存消耗和快速启动时间,特别适用于云原生和容器化环境。 关键特性 …

洛谷题单1-P5705 【深基2.例7】数字反转-python-流程图重构

题目描述 输入一个不小于 100 100 100 且小于 1000 1000 1000,同时包括小数点后一位的一个浮点数,例如 123.4 123.4 123.4 ,要求把这个数字翻转过来,变成 4.321 4.321 4.321 并输出。 输入格式 一行一个浮点数 输出格式 …

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建,并实现远程联机,详细教程

【云服务器】在Linux CentOS 7上快速搭建我的世界 Minecraft 服务器搭建,详细详细教程 一、 服务器介绍二、下载 Minecraft 服务端三、安装 JDK 21四、搭建服务器五、本地测试连接六、添加服务,并设置开机自启动 前言: 推荐使用云服务器部署&…