半同步主從復制

半同步主從復制的概念

半同步主從復制(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.pswp.cn/diannao/42300.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42300.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42300.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode 3101.交替子數組計數:等差數列求和(較詳題解)

【LetMeFly】3101.交替子數組計數:等差數列求和(較詳題解) 力扣題目鏈接:https://leetcode.cn/problems/count-alternating-subarrays/ 給你一個二進制數組 nums 。 如果一個子數組中 不存在 兩個 相鄰 元素的值 相同 的情況&a…

階段三:項目開發---大數據開發運行環境搭建:任務8:安裝配置Redis

任務描述 知識點:安裝配置Redis 重 點: 安裝配置Redis 難 點:無 內 容: Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可…

【C++:運算符重載】

運算符重載 特點: 函數名由operator運算符組成 注: 不能通過其他符號創建新的操作符,只能使用C/C語法存在的操作符重載操作符必須有一個類類型參數,原因:不能重載操作符改變內置類型的行為當類成員操作符重載時&#…

web自動化(五)上傳文件

我們需要準備一個上傳文件的html&#xff0c;創建a.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文件上傳示例</title> </head> <body><form action"/upload"…

電路基礎知識匯總

1.0 串連&#xff0c;并聯&#xff0c;混連 串聯的定義 電路串聯是一種電路元件的連接方式&#xff0c;其中各個元件沿著單一路徑互相連接&#xff0c;形成一個連續的鏈。在串聯電路中&#xff0c;每個節點最多只連接兩個元件&#xff0c;這意味著電流只有一條路徑可以通過整個…

Apache Seata Mac下的Seata Demo環境搭建

本文來自 Apache Seata官方文檔&#xff0c;歡迎訪問官網&#xff0c;查看更多深度文章。 本文來自 Apache Seata官方文檔&#xff0c;歡迎訪問官網&#xff0c;查看更多深度文章。 Mac下的Seata Demo環境搭建&#xff08;AT模式&#xff09; 前言 最近因為工作需要&#xf…

Git教程

文章目錄 Git分布式版本控制工具版本控制器的方式常用命令遠程倉庫Tip Git分布式版本控制工具 ? Git是一個開源的分布式版本控制系統&#xff0c;可以有效、高速地處理從很小到非常大的項目版本管理。 ? Git是分布式的&#xff0c;Git不需要有中心服務器&#xff0c;我們每…

【感謝告知】本賬號內容調整,聚焦于Google賬號和產品的使用經驗和問題案例分析

親愛的各位朋友&#xff1a; 感謝您對本賬號的關注和支持&#xff01; 基于對朋友們需求的分析和個人興趣的轉變&#xff0c;該賬號從今天將對內容做一些調整&#xff0c;有原來的內容改為Google&#xff08;谷歌&#xff09;賬號和產品的使用經驗&#xff0c;以及相關問題的…

24西安電子科技大學經濟與管理學院—考研錄取情況

24西安電子科技大學—經理與管理學院—考研錄取統計 01、經理與管理學院各個方向 02、24經濟與管理近三年復試分數線對比 1、經管院24年院線相對于23年院線普遍下降2-15分&#xff0c;個別專業上漲4-10分。 2、經管院應用經濟學2024年院線350分&#xff1b;管理科學與工程院線…

java join與yield方法

join() join() 方法的主要作用是使當前線程&#xff08;調用 join() 方法的線程&#xff09;等待目標線程完成執行。當目標線程執行完畢后&#xff0c;當前線程才會繼續執行。 代碼示例&#xff1a; public class JoinExample {public static void main(String[] args) {Thr…

保研復習 | 數據結構

目錄 CH1?緒論☆ 數據項、數據元素、數據結構☆ 邏輯結構和存儲結構的區別☆ 順序存儲結構和鏈式存儲結構的比較☆ 算法的重要特性☆ 算法的復雜度 CH2?線性表☆ 單鏈表 CH3?棧、隊列和數組☆ 棧和堆是什么&#xff1f;☆ 棧在括號匹配中的應用☆ 棧在表達式求值中的應用☆ …

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&#xff1a;轉換數據類型 CONVERT(data_type(length),data_to_be_converted,style)例如&#xff1a;CONVERT(VARCHAR(10),GETDATE(),110) SUBSTRING()&#xff1a;從字符串中返回…

java項目總結5

1.單列集合頂層接口Collction 集合體系結構 注意&#xff1a;因為Collection定義的方法是共性的&#xff0c;使用不能通過搜引來刪除&#xff0c;只能通過元素的對象進行刪除&#xff0c;返回值是boolean類型。例如我添加了"aaa"進List集合&#xff0c;刪除則要對象…

STM32-01 推挽輸出-點亮LED

本文以STM32中點亮LED為例&#xff0c;解讀推挽輸出的原理 推挽輸出介紹 所謂的推挽輸出&#xff0c;就是通過控制輸出控制模塊&#xff0c;打開或者關閉P-MOS或者N-MOS。 ─ 推挽模式下&#xff1a;輸出寄存器上的’0’激活N-MOS&#xff0c;而輸出寄存器上的’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…

pyecharts可視化案例大全(11~20)

pyecharts可視化案例大全(11~20) 十一、設置動畫效果十二、直方圖帶視覺組件十三、設置漸變色(線性漸變)十四、設置漸變色(徑向漸變)十五、設置分割線十六、設置分隔區域十七、面積圖十八、堆疊面積圖十九、自定義線樣式二十、折線圖平滑處理十一、設置動畫效果 在圖表加載前…

【AI原理解析】—主成分分析(PCA)原理

目錄 一、PCA的思想 二、PCA的步驟 三、關鍵概念 四、PCA的優勢與應用 PCA&#xff08;主成分分析&#xff0c;Principal Component Analysis&#xff09;是一種廣泛使用的數據降維算法&#xff0c;它通過線性變換將原始數據轉換為一組各維度線性無關的表示&#xff0c;從而…

iOS應用的內存優化

對一個 iOS 項目進行內存優化&#xff0c;可以從多個方面入手&#xff0c;確保應用在不同場景下都能高效穩定地運行。以下是一些具體的內存優化措施和詳細說明&#xff1a; 1. 自動引用計數&#xff08;ARC&#xff09;管理 1.1 避免循環引用 循環引用會導致內存泄漏。使用 …