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.pswp.cn/web/74070.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/74070.shtml
英文地址,請注明出處:http://en.pswp.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四、搭建服務器五、本地測試連接六、添加服務,并設置開機自啟動 前言: 推薦使用云服務器部署&…